PDO プリペアド ステートメントで二重の結果がフェッチされる
ユーザーは、データをファイルに出力するときに PDO プリペアド ステートメントが二重の結果を返すという問題が発生しました。 CSVファイル。問題のコードは、$result_get_rows->fetch() 関数を利用してデータベースから行を取得します。
Fetch() メソッドについて
fetch( PDOStatement オブジェクトの ) メソッドは、結果セットから行を取得するために使用されます。デフォルトでは、インデックス付き配列 (列番号による) と連想配列 (列名による) の両方として行が返されます。
問題の解決
二重の結果を修正するには、 fetch() メソッドの fetch_style パラメータを使用して、結果行を返す方法を指定することをお勧めします。このパラメータは次の定数のいずれかを受け入れます:
修正コード
PDO::FETCH_ASSOC を使用すると、コードを次のように変更できます:
<code class="php">while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) { $csv .= '"'.join('","', str_replace('"', '""', $rows_get_rows))."\"\n"; }</code>
この変更により、行が確実に連想配列として返され、CSV ファイルに出力する際の値の重複が効果的に防止されます。 .
以上がデータを CSV ファイルにフェッチすると、PDO プリペアド ステートメントが二重の結果を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。