ホームページ  >  記事  >  データベース  >  PDO プリペアド ステートメント Fetch() が二重の結果を返すのはなぜですか?

PDO プリペアド ステートメント Fetch() が二重の結果を返すのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 02:43:30634ブラウズ

Why Does My PDO Prepared Statement Fetch() Return Double Results?

PDO プリペアド ステートメント Fetch() が 2 つの結果を返す

PDO プリペアド ステートメントを使用すると、 fetch() メソッドから取得した結果が重複しているように見えます。この問題は、目的のデータが行ごとに 2 回取得され、出力の列数が予想の 2 倍になる場合に発生します。

この問題は、結果を取得するデフォルトの PDO::FETCH_BOTH モードを使用してデータをフェッチするときに発生します。列名と列番号の両方でインデックスが付けられます。この重複を防ぐには、次のような代替フェッチ スタイルを指定します。

  • PDO::FETCH_ASSOC: 列名によってインデックス付けされた配列を返し、列番号によって引き起こされる重複を回避します。 Index.
  • PDO::FETCH_NUM: 配列を返します列番号によってインデックス付けされるため、列名のインデックス付けが不要になります。

これらのフェッチ モードのいずれかを使用すると、各行の正しい列数を取得でき、出力が意図したとおりに表示されるようになります。 .

これは PDO::FETCH_ASSOC の使用方法の例です:

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) {
    $csv .= '"' . join('","', str_replace('"', '""', $rows_get_rows)) . "\"\n";
}

このコードは取得しますデータを連想配列として保存し、重複する列を削除します。

以上がPDO プリペアド ステートメント Fetch() が二重の結果を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。