1

放轻松,因为我是 PHP 新手;)

我的开发堆栈是带有 XAMP 的 Windows 7,我的实时服务器是一个交钥匙 LAMP 堆栈。

我正在使用 ADODB 连接到 MSSQL 并将所有结果附加到一个字符串中,代码如下:

    $sql = "SELECT Field1 FROM tb_Table";

        $rs = $db->Execute($sql); 

         if (!$rs) {
            print $db->ErrorMsg(); 
        } else {

            $arr = $rs->GetRows();
            $rows = '';
            //Loop through parent array (rows)
                for ($i=0;$i<=(count($arr)-1);$i++) {
                    $rows .= " ".$arr[$i][0]." ";
                }
print strlen($rows)

我本地机器上的字符串长度是 195,057 在服务器上是 136,858

我已经检查过从数据库返回的行数是否相同,但我不明白为什么字符串的长度在环境之间应该不同。

任何指针将不胜感激

4

2 回答 2

1

我对 ADODB 扩展不太熟悉,但您可以尝试将for循环更改为:

foreach($arr as $row) {
    $rows .= " ".$row[0]." ";
}

这将解决分配给数组的键不连续的可能性。

如果这没有帮助,请尝试计算字符串长度mb_strlen(),因为它适用于包含多个字节字符的编码:

print mb_strlen($rows);
于 2012-08-09T13:59:19.247 回答
1

好吧,猜对了。问题不在于提供程序的代码,Linux 机器上的提供程序仅从字段返回最大长度 255。

Windows 提供程序返回字段的完整长度。

谢谢大家看:)

于 2012-08-09T14:39:31.833 回答