我正在维护一个用PHP编写的Web应用程序,它连接到MSSQL数据库 原始开发人员使用http://adodb.sourceforge.net/作为他的数据库库。
问题是,当使用GetAll
方法读取数据时,所有字符串都被截断为255个字符。
有没有人解决我的问题?
编辑:我遇到问题的专栏是varchar(800)
答案 0 :(得分:2)
你到底能改变什么?
我偶然发现了这篇文章,这可能有所帮助:ADODB Varchar Limit Problem
似乎建议您尝试的是:
varchar
更改为text
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
希望这有帮助
答案 1 :(得分:0)
你可以单独使用最后一栏:
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
然后,您可以将列粘合在一起。你可能需要一些特殊情况,当时字符串不是那么长的。
答案 2 :(得分:0)
尝试在drivers \ adodb-mssql.inc中将所有“255”替换为“800”或“MAX”。
或者只是投了它,不更改为text
数据类型,text
是deprecated
答案 3 :(得分:-1)
我在PHP中使用ADODB来查询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
}
答案 4 :(得分:-1)
检查您是否正在使用DISTINCT和GROUP BY语句,显然“在使用DISTINCT和GROUP BY语句时会在文本字段上发生截断,因为比较可变长度字符串而不是固定长度字符串会产生开销”。