1

私はPHPを初めて使用するので、気楽にやってください;)

私の開発スタックはXAMPを搭載したWindows7で、ライブサーバーはターンキー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 に答える