Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Урезание значение переменной при получение из базы


Автор: Vbif 27.4.2008, 17:37
Появилась такая проблема.
При подключение к базе mssql и выборке оттуда значение в ассоциативный массив, урезается значение текстовых переменных.
К примеру в базе хранится такой вот кусок текста.

Код

В ближайшее время будут проведены интервью со многими из сотрудников нашей компании. Посмотрим на коллегу справа, а теперь на коллегу слева, кто знает, может, Вы учитесь в одном ВУЗе и у вас одинаковые интересы и по какой-то чудовищной случайности Вы так ещё и не успели познакомиться, пора пролить на это свет. Хотим знать всё, хотим знать про всех=).Всё самое сокровенное и интересное Вы сможете прочитать на страницах нашего портала.


данный текст состоит из 437 символов.

далее из php выполняем запрос на выборку из базы
Код

$query_id = mssql_query("SELECT FULL_NEWS FROM BASE_TABLE");
$result = @ mssql_fetch_assoc($query_id);
 echo $result['FULL_NEWS'];


и на экран выводится уже следующий текст 
Код

 В ближайшее время будут проведены интервью со многими из сотрудников нашей компании. Посмотрим на коллегу справа, а теперь на коллегу слева, кто знает, может, Вы учитесь в одном ВУЗе и у вас одинаковые интересы и по какой-то чудовищной случайности Вы так 


данный текст состоит из 256 символов.

Я понимаю что проблема состоит в типе данных и данная проблема решается на стороне php а не mssql. Но отладить так и не получилось. 
На всякий случай пробывал мучать вот эти параметры в конфиге
; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textlimit = 2147483647

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textsize = 2147483647
но не помогло=)
Заранее спасибо за помощь.

Автор: Feldmarschall 27.4.2008, 18:04
Цитата(Vbif @  27.4.2008,  17:37 Найти цитируемый пост)
Я понимаю что проблема состоит в типе данных и данная проблема решается на стороне php а не mssql

а вот и не угадал. все наоборот

Автор: Vbif 27.4.2008, 18:27
в базе в ячейке содержится полный текст, не урезанный.
говорить что не угадал и при это не аргументировать свой ответ не слишком профессионально.

Автор: Fortop 27.4.2008, 20:01
Vbif, а в PHP нет ограничений на длину строки в 256 символов

Да и еще такой момент, если ты эти параметры

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textlimit = 2147483647

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textsize = 2147483647

мучал именно в таком виде (с ; в начале, то толку от таких мучений мало smile )
Плюс после изменений php.ini, обычно надо рестартовать Apache. Поскольку PHP обычно подключают, как модуль.

Автор: Vbif 28.4.2008, 09:32
=))) не ну конечно же я раскомментировал строки и изменял значение 4096 дефолтовое на максимальное, и у меня не apache a iis 6.0 php подключен как cgi.

Автор: Vbif 30.4.2008, 10:25
на многих форумах читал что необходимого изменить значение
mssql.textsize = 2147483647
но данный способ не помог, если ещё какие-либо пути решения?

Автор: Vbif 2.5.2008, 14:57
нашёл решение проблемы.. если кому будет интересно..
первое необходимо следующее прописать...
Код

 $db->query ('SET TEXTSIZE 65536');
 ini_set ('mssql.textlimit' , '65536');
 ini_set ('mssql.textsize' , '65536'); 

далее когда выполняем запрос к базе поле которое содержит большое текстовое значение необходимо конвертировать в тип text
Код

CONVERT(TEXT, S_NEWS_ITEM.LONG_ABSTRACT)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)