PHP MySQL SELECT усеченный текст - PullRequest
2 голосов
/ 03 октября 2009

У меня есть таблица MySQL со столбцом 'full_description' типа 'text'. В этом столбце находится стандартная lorem ipsum (плюс слово END):

Lorem Ipsum Dolor Sit Amet, Концертёр Adipisicing Elit, Сед До eiusmod tempor incididunt ut labore et Долоре Магна Аликуа. Ut enim ad minim Вениам, Quis Nostrud упражнения ullamco labouris nisi ut aliquip ex ea коммандо Duis aute irure долор в репеэндерит в волупате велит эссе cillum долоре ес фугиат nulla pariatur. Excepteur Sint occaecat cupidatat non proident, sunt в виновном виновнике дезертир моллит аним есть рабочая сила. END

Тем не менее, делая выбор в php, он получает только столько:

Lorem ipsum dolor sit amet, Концертёр Adipisicing Elit, Сед До eiusmod tempor incididunt ut labore et Долоре Магна Аликуа. Ut enim ad minim Вениам, Quis Nostrud упражнения ullamco labouris nisi ut aliquip ex ea коммандо Duis aute irure Долор я

Вот код php, который его получает:

function getPostingDetails($posting_id){
        $getPosting = $this->PLAST->prepare('SELECT posting_id, poster_id, title, short_description, full_description FROM postings WHERE posting_id=?');
        $getPosting->bind_param('i',$posting_id);
        $getPosting->execute();
        $getPosting->bind_result($row['posting_id'],$row['poster_id'],$row['title'],$row['short_description'],$row['full_description']);
        $getPosting->fetch();
        $getPosting->close();
        return $row;        
    }

Это массив, который я получаю:

Array ( [posting_id] => 1 [poster_id] => 1 [title] => Test 1 [short_description] => This is a short description. [full_description] => Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor i )

Остальные поля в порядке. Что я делаю неправильно? Или есть параметр или функция, о которой я не знаю, которая ограничивает операторы SELECT? В MySQL? В PHP mysqli?

Спасибо

Это структура таблицы по запросу:

CREATE TABLE `postings` (
  `posting_id` int(11) NOT NULL AUTO_INCREMENT,
  `poster_id` int(11) NOT NULL,
  `title` tinytext NOT NULL,
  `short_description` tinytext NOT NULL,
  `full_description` text NOT NULL,
  PRIMARY KEY (`posting_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1

Ответы [ 4 ]

0 голосов
/ 04 декабря 2018

Я столкнулся с подобной проблемой, хотя использование group_concat и установка максимальной длины для group_concat помогли мне. Просто выполнил этот запрос перед моим запросом выбора.

SET GROUP_CONCAT_MAX_LEN = 10000;

0 голосов
/ 14 января 2010

попробуйте инициализировать пустую строку, прежде чем вы получите и сохраните ее в php .... У меня была похожая проблема, когда она сохраняла только первую букву строки, но когда я инициализировал переменную перед сохранением в ней, это сработало

0 голосов
/ 14 января 2010

Вместо использования массива для хранения результатов, имеет ли какое-то значение, если вы используете фактические переменные, т.е. замените это: $getPosting->bind_result($row['posting_id'],$row['poster_id'],$row['title'],$row['short_description'],$row['full_description']); с этим: $getPosting->bind_result($posting_id,$poster_id,$title,$short_description,$full_description); Посмотрите, имеет ли это какое-то значение?

0 голосов
/ 03 октября 2009

Какую платформу вы используете? Я думаю, что это ограничение по умолчанию для типа данных TEXT.

Под фреймворком я подразумеваю библиотеку PHP, которая обращается к базе данных:

    $getPosting->bind_param(...);
    $getPosting->execute();
    $getPosting->bind_result(...);
    $getPosting->fetch();
    $getPosting->close();

Выше приведены функции из какой-то библиотеки. И наиболее вероятным является то, что эта библиотека имеет ограничения по умолчанию для длины поля TEXT.

РЕДАКТИРОВАНИЕ:

Я обнаружил аналогичную проблему с SQL Server и PHP здесь . Они предлагают сделать так:

SELECT CAST(F AS TEXT) AS F FROM

Может быть, вы могли бы сделать наоборот:

SELECT ..., CAST(full_description AS VARCHAR) FROM postings
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...