2012-08-09 214 views
1

宽容我,因为我是新来的PHP之间的区别;)长度开发和督促

我的开发堆栈的Windows 7 XAMP,我活的服务器是一个交钥匙的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) 

我的本地机器上的字符串长度为195057的服务器上是136858

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

任何指针将是非常赞赏

+0

这是完全相同的数据吗? (不只是相同的行数) – Alfabravo 2012-08-09 13:57:40

+0

您检查了相同数量的行,但您确定每行是相同的吗? – sachleen 2012-08-09 13:58:08

+0

是的,尽可能接近,sql是相同的,虽然数据量可以增长(但只能通过一天的几次恢复),但prod字符串总是比dev字符串短得多。我有两个实例在我面前打开并立即运行它们都返回不同的结果 – SWa 2012-08-09 13:59:51

回答

1

好吧,sussed它。问题不在于它是提供者的代码,Linux框中的提供者仅返回字段中的最大长度255。

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

感谢大家的期待:)

1

我不是太熟悉ADODB扩展,但你可以尝试改变你for循环到这一点:

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

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

如果不帮助,尝试计算字符串的长度与mb_strlen()代替,因为它会与包含多个字节字符的编码工作:

print mb_strlen($rows); 
+0

感谢您的建议,但不幸的是,我得到了同样的结果。 – SWa 2012-08-09 14:08:10

相关问题