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


Автор: recruit 9.3.2006, 02:19
обычный запрос к базе данных
На сервере стоит, что символов может быть 8000, я записал их в таблицу,
а на экран выводит почему то только 256.
Почему?
Код

<?
$link = mssql_connect($s,$syslogin,$syspsw); 
mssql_select_db($sysdb, $link);
$ID_forum=0;
$ID_ex=0;


$r = mssql_query("SELECT     TOP 100 PERCENT *
FROM         (SELECT     TOP 10 date_rep, ID_rep, Text_rep
                       FROM          dbo.messages
                       WHERE      (ID_forum = '$ID_forum') AND (ID_ex = '$ID_ex')
                       ORDER BY date_rep DESC) x
ORDER BY date_rep", $link);

echo ("<center><table border=0>");
for ($i = 0; $i < mssql_num_rows( $r ); ++$i)
    {
    $line = mssql_fetch_row($r);
    echo( "<tr>
    <td>$line[0]</td><td>$line[1]</td><td>$line[2]</td></tr>");
    }
?>

Автор: Serkys 9.3.2006, 02:31
256 (или 255) символов - это тип поля tinytext. Покопайся в базе, и тебе будет счастье.

Автор: recruit 9.3.2006, 02:42
Тип поля стоит varchar и менять его нельзя!

Автор: sergejzr 9.3.2006, 02:48
varchar больше 256 не бывает в мускуле.

Автор: recruit 9.3.2006, 02:53
а если в ручную их добавлят, прям сразу в таблицу, то добавляются же символы!!!!!! до 8000

Автор: sergejzr 9.3.2006, 03:04
Это как "вручную"?

Автор: recruit 9.3.2006, 03:08
через Enterprise Manager

Автор: sergejzr 9.3.2006, 03:11
А если через него прочитать добавленное?

Автор: recruit 9.3.2006, 03:18
мне надо через сайт!

Автор: sergejzr 9.3.2006, 03:21
У тебя в базе на запись сохраняется 255 знаков и никаким образом 256 ты не прочитаешь, потому что его там нет. smile

Автор: recruit 9.3.2006, 04:08
надеюсь ты права ) но когда я открываю Enterprise Manager и после добавления записей,
там сохраняется больше 256!!!!!!!!!!!! Сам проверил!

Автор: Нурик Сакура 9.3.2006, 09:21
Если у тебя стоит тип varchar - ты никак не сохранишь через сайт больше, чем 256 символов. Вручную ты можешь добавить через Enterprise Manager хоть 8к, а потом их считать в той же проге. Но попробуй считать их на сайт - вряд ли считаешь. Поменяй тип столбца на blob, точно не скажу, сколько он держит, но сообщения на форумах вроде blob и нормально влазят.

Автор: recruit 9.3.2006, 14:04
В MS SQL сервере нету типа blob smile

Автор: sergejzr 9.3.2006, 14:09
зато есть text
http://www.codenet.ru/db/mssql/read3.php

Автор: Нурик Сакура 10.3.2006, 16:54
Цитата(recruit @ 9.3.2006, 14:04 Найти цитируемый пост)
В MS SQL сервере нету типа blob

Виноват, проглядел о какой БД идет речь.

Автор: recruit 11.3.2006, 00:20
MS SQL Server 2000

Автор: Bangladesh 11.3.2006, 00:58
я хоть и работаю с MySQL, но чисто логически это может происходить из-за неверного установления типа столбца. допустим у тебя стоит текст с максимумом в 500 символов, а сообщение 545. вот он их и обрезает. посмотри повнимательней.

Автор: recruit 11.3.2006, 02:18
1000 раз смотрел, тип стоит varchar(8000)
при показе в браузере показывает только 256 символов
а если через odbc коннектится 1024 не пойму в чём фишка.

Автор: -=Ustas=- 11.3.2006, 10:58
Цитата(recruit @ 11.3.2006, 02:18 Найти цитируемый пост)
1000 раз смотрел, тип стоит varchar(8000)
при показе в браузере показывает только 256 символов
а если через odbc коннектится 1024 не пойму в чём фишка.

Знакомая история smile Правда я тогда работал с MS Access через ODBC, там фишка в том, что образается размер самих переменных при получении данных. Здесь БД не при чем, т.к. тут надо править php.ini, для ODBC есть директива odbc.defaultlrl, которая должна устанавливать размер в байтах для переменной, а для MSSQL надо расскоментировать строки ;mssql.textlimit = 4096, ;mssql.textsize = 4096 и поставить свои значения, думаю должно помочь smile

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