【问题标题】:How do I read a string > 255 chars in php/adodb?如何在 php/adodb 中读取 > 255 个字符的字符串?
【发布时间】:2010-12-09 09:56:47
【问题描述】:

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

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

有人能解决我的问题吗?

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

【问题讨论】:

    标签: php sql-server database adodb


    【解决方案1】:

    你到底能改变什么?

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

    似乎建议您尝试的是:

    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

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      您能否分别使用以下方法获取最后一列:

      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
      

      ?

      然后您可以将这些列重新粘合在一起。您可能需要一些特殊情况来处理字符串实际上没有那么长的情况。

      【讨论】:

        【解决方案3】:

        尝试将 drivers\adodb-mssql.inc 中的所有“255”替换为“800”或“MAX”。

        或者直接转换,改成text数据类型,text就是deprecated

        【讨论】:

          【解决方案4】:

          在 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
          }
          

          【讨论】:

            【解决方案5】:

            检查您是否正在使用 DISTINCT 和 GROUP BY 语句,显然“由于比较可变长度字符串而不是固定长度字符串的开销,在使用 DISTINCT 和 GROUP BY 语句时文本字段上会发生截断”。

            Link

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-11-05
            • 1970-01-01
            • 1970-01-01
            • 2021-03-28
            • 1970-01-01
            • 1970-01-01
            • 2021-04-02
            • 2015-06-29
            相关资源
            最近更新 更多