Как мне прочитать строку> 255 символов в php / adodb? - PullRequest
2 голосов
/ 09 декабря 2010

Я поддерживаю веб-приложение, написанное на PHP, которое подключается к базе данных MSSQL.
Первоначальный разработчик использовал http://adodb.sourceforge.net/ в качестве библиотеки базы данных.

Проблема в том, что при чтении данных методом GetAll все строки усекаются до 255 символов.

У кого-нибудь есть решение моей проблемы?

edit: Столбец, с которым у меня проблема, это varchar(800)

Ответы [ 5 ]

2 голосов
/ 16 декабря 2010

Что именно вы можете изменить?

Я наткнулся на эту статью, которая может помочь: Проблема ADODB Varchar Limit

Что, похоже, предлагает вам попробоватьis:

  1. Измените тип столбца с varchar на text
  2. В операторе выбора укажите CAST для столбца:

т.е.:

select CAST(MyColumn as text) as MyColumn  

В посте цитируются следующие две статьи, в которых подтверждается вышеприведенное

http://php.oregonstate.edu/manual/en/ref.mssql.php#47527

http://php.oregonstate.edu/manual/en/ref.mssql.php#71602

Надеюсь, это поможет

0 голосов
/ 21 декабря 2010

Попробуйте заменить все «255» на «800» или «MAX» в драйверах \ adodb-mssql.inc.

Или просто разыграть его, не изменить на text тип данных, text is устарел

0 голосов
/ 19 декабря 2010

Проверьте, используете ли вы операторы DISTINCT и GROUP BY, по-видимому «усечение происходит в текстовых полях при использовании операторов DISTINCT и GROUP BY из-за издержек сравнения строк переменной длины в отличие от строк фиксированной длины».

Ссылка

0 голосов
/ 15 декабря 2010

У меня нет проблем с использованием ADODB в PHP для запроса MSSQL. Я пишу запросы следующим образом:

<?php
// assuming $db is properly configured and connected ADODB database object
$rs = $db->Execute("SELECT ...");
while (!$rs->EOF) {
    print $rs->fields['fieldname'];
    // further processing of row
    $rs->MoveNext(); // move to the next row
}
0 голосов
/ 14 декабря 2010

Можете ли вы получить последний столбец отдельно, используя:

SELECT SUBSTRING (longfield,1,200) as Part1, SUBSTRING (longfield,201,200) as Part2, SUBSTRING (longfield,401,200) as Part3, SUBSTRING (longfield,601,200) as Part4

?

Затем вы можете склеить столбцы вместе.Возможно, вам понадобятся особые случаи, когда строка не так долго.

...