ホームページ >バックエンド開発 >PHPチュートリアル >PDO 結果セットを複数回反復処理するにはどうすればよいですか?

PDO 結果セットを複数回反復処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-29 14:56:02970ブラウズ

How to Iterate Through a PDO Result Set Multiple Times?

PDO 結果セットを最初から繰り返す

MySQL SELECT メソッドから PDO メソッドに移行するとき、配列ポインタをリセットして反復処理する結果セットを複数回実行するのは難しい場合があります。これは、これらのメソッドの配列ポインターの処理方法の違いによるものです。

提供されたコードでは、最初の while ループは、フェッチされた配列を行 0 から開始して正常に反復処理します。ただし、PDO の fetch() メソッドが呼び出しごとに配列ポインタを進めるため、2 番目の while ループは空のセットを返します。

目的の動作を実現するには、結果を配列に格納し、その配列を反復処理します。複数回。以下に例を示します。

$pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC');
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();

$rows = $stmt->fetchAll();

foreach ($rows as $r) {
    // first run
}

foreach ($rows as $r) {
    // second run
}

fetchAll() を使用すると、結果セットのすべての行が $rows 配列に保存されます。これにより、配列ポインターを手動でリセットすることなく、配列を複数回反復処理できるようになります。

以上がPDO 結果セットを複数回反復処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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