ホームページ > データベース > mysql チュートリアル > データを CSV ファイルにフェッチすると、PDO プリペアド ステートメントが二重の結果を返すのはなぜですか?

データを CSV ファイルにフェッチすると、PDO プリペアド ステートメントが二重の結果を返すのはなぜですか?

Patricia Arquette
リリース: 2024-11-02 03:57:02
オリジナル
578 人が閲覧しました

Why is my PDO prepared statement returning double results when fetching data into a CSV file?

PDO プリペアド ステートメントで二重の結果がフェッチされる

ユーザーは、データをファイルに出力するときに PDO プリペアド ステートメントが二重の結果を返すという問題が発生しました。 CSVファイル。問題のコードは、$result_get_rows->fetch() 関数を利用してデータベースから行を取得します。

Fetch() メソッドについて

fetch( PDOStatement オブジェクトの ) メソッドは、結果セットから行を取得するために使用されます。デフォルトでは、インデックス付き配列 (列番号による) と連想配列 (列名による) の両方として行が返されます。

問題の解決

二重の結果を修正するには、 fetch() メソッドの fetch_style パラメータを使用して、結果行を返す方法を指定することをお勧めします。このパラメータは次の定数のいずれかを受け入れます:

  • PDO::FETCH_ASSOC: 列名でインデックス付けされた連想配列を返します。
  • PDO::FETCH_NUM: 列でインデックス付けされたインデックス付き配列を返します。
  • PDO::FETCH_BOTH (デフォルト): 列名と列番号の両方でインデックス付けされた配列を返します。

修正コード

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート