字符串输出的长度在dev和prod之间不同

时间:2012-08-09 13:45:48

标签: php adodb

因为我是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

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

非常感谢任何指针

2 个答案:

答案 0 :(得分:1)

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

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

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

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

print mb_strlen($rows);

答案 1 :(得分:1)

好的,怀疑了。问题不在于它是提供者的代码,Linux盒子上的提供者只从字段中返回最大长度为255.

Windows提供程序返回字段的全长。

感谢大家的关注:)。