二重の結果を取得する準備済みステートメントに関する PDO の問題
スクリプトを使用してデータを CSV ファイルにエクスポートすると、次の問題が発生する可能性があります。必要な 1 行ではなく、データの複数のコピーが表示されます。この問題は、PDO プリペアド ステートメントを使用するときに明らかになり、なぜそれが発生するのかを理解するのが混乱する可能性があります。
この問題を解決するには、返される結果に必要な形式を指定することが重要です。デフォルトでは、PDO は FETCH_BOTH モードを利用し、列名と 0 から始まるインデックスの列番号の両方を含む配列を返します。この場合、列名でインデックス付けされた連想配列のみを取得したいと考えています。
この状況を修正するには、目的のフェッチ モードを指定してコードを変更するだけです:
while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) { $csv .= '"'.join('","', str_replace('"', '""', $rows_get_rows))."\"\n"; }
また、数値インデックス付き配列を使用したい場合は、代わりに PDO::FETCH_NUM を使用できます。
オプション選択すると、返される結果の形式が決定され、CSV エクスポートに必要な構造でデータを確実に受け取ることができます。
以上がPDO プリペアドステートメントを使用してフェッチすると二重の結果が得られるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。