2012-08-09 213 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

相關問題