ホームページ > データベース > mysql チュートリアル > 「fetchAll()」の後に PDO 結果の配列ポインタをリセットするにはどうすればよいですか?

「fetchAll()」の後に PDO 結果の配列ポインタをリセットするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-01 01:32:09
オリジナル
989 人が閲覧しました

How to Reset the Array Pointer in PDO Results After `fetchAll()`?

PDO 結果配列ポインターのリセット – 詳細な解決策

はじめに

MySQL SELECT メソッドから PDO メソッドへの移行により、次のような問題が発生する可能性があります。課題。配列ポインタをリセットすると、フェッチされた配列を複数回反復処理できるようになります。

問題

MySQL では、mysql_data_seek() 関数がこれを実現します。ポインタのリセット。ただし、PDO ではこの機能は利用できません。提供されたコードに例示されているように、行 0 から始まる後続のループは結果を返しません。

解決策

この問題を解決するには、フェッチされた結果を配列に保存し、その配列を複数回反復処理します。この変更されたコードは、解決策を示しています。

$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) {
    // seconds run
}
ログイン後にコピー

追加コンテキスト

  • fetchAll() メソッドは、すべての結果を配列に収集します。
  • $rows 配列を反復処理すると、ポインタが常に各配列の最初の行から始まることが保証されます。

このソリューションを実装すると、PDO 結果の配列ポインターを効果的にリセットでき、フェッチされた配列を行 0 から複数回反復処理できるようになります。

以上が「fetchAll()」の後に PDO 結果の配列ポインタをリセットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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