PDO プリペアド ステートメントで二重の結果がフェッチされる
ユーザーが、データをファイルに出力するときに、PDO プリペアド ステートメントが二重の結果を返すという問題が発生しました。 CSVファイル。問題のコードは、$result_get_rows->fetch() 関数を利用してデータベースから行を取得します。
Fetch() メソッドについて
fetch() PDOStatement オブジェクトのメソッドは、結果セットから行を取得するために使用されます。デフォルトでは、インデックス付き配列 (列番号による) と連想配列 (列名による) の両方として行が返されます。
問題の解決
二重の結果を修正するには、 fetch() メソッドの fetch_style パラメータを使用して、結果行を返す方法を指定することをお勧めします。このパラメータは次の定数のいずれかを受け入れます:
修正コード
PDO::FETCH_ASSOC を使用すると、次のようにコードを修正できます:
while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) {
$csv .= '"'.join('","', str_replace('"', '""', $rows_get_rows))."\"\n";
}
この変更により、行が連想配列として返されるようになり、CSV ファイルに出力する際の値の重複が効果的に防止されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3