2009-03-11 13 views
1

Ubuntu 8.04 LTSでPHP 5.2.4でUnixODBCを使用していて、IBM iにあるテーブルからすべての結果を取り出し、それらをローカルのMySQLテーブルに複製しようとしています。iSeriesへのODBC接続Odd結果の数

コードワイズはエラーなしで動作していますが、IBM iに含まれているものよりも多くの行があります。

私は25613行で終わるはずですが、PHPは25630行がMySQLデータベースに挿入されていることを報告します。私は、MySQLデータベースに見ると

$counter = 0; 
while($row = odbc_fetch_array($result)) { 
    //Insert into MySQL using Zend Framework 
    $counter++; 
} 
echo $counter; 

行の一部が実際に複製されます。私はodbc_fetch_array()の文書で、IBM iにアクセスする際の不安定な動作についての文書を見ましたが、その解決策を試すとスクリプトが実行されて終了するように見えることはありません。

何を確認するかについてのアイデアはありますか?

答えて

0

毎回同じ行が重複していますか?もしそうなら、それらが重複している理由を暗示できるこれらのレコードに固有の何かがありますか?

odbc_fetch_row()のように、結果を得るために別のバインディングを使用している可能性があります。 odbc_num_rows()とは何ですか?

これらの手法やその他の手法を使用すると、バグを解決できます。

+0

odbc_num_rows()は '-1'を返し、カウンタ付きのodbc_fetch_row()は25,630を返します。 – dragonmantank

+0

odbc_num_rows()が正しく動作しない理由が分かりませんが、MySQLテーブルが切り捨てられず、重複行が発生していることがわかりました。 odbc_fetc_row()に切り替えた後、すべてが正しく同期されているようです。 – dragonmantank

関連する問題