我如何读取字符串> php / adodb中的255个字符?

时间:2010-12-09 09:56:47

标签: php sql-server database adodb

我正在维护一个用PHP编写的Web应用程序,它连接到MSSQL数据库 原始开发人员使用http://adodb.sourceforge.net/作为他的数据库库。

问题是,当使用GetAll方法读取数据时,所有字符串都被截断为255个字符。

有没有人解决我的问题?

编辑:我遇到问题的专栏是varchar(800)

5 个答案:

答案 0 :(得分:2)

你到底能改变什么?

我偶然发现了这篇文章,这可能有所帮助:ADODB Varchar Limit Problem

似乎建议您尝试的是:

  1. 将列类型从varchar更改为text
  2. 在select语句中,为列添加CAST
  3. 即:

    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数据类型,textdeprecated

答案 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语句时会在文本字段上发生截断,因为比较可变长度字符串而不是固定长度字符串会产生开销”。

Link