はじめに
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 }
追加コンテキスト
このソリューションを実装すると、PDO 結果の配列ポインターを効果的にリセットでき、フェッチされた配列を行 0 から複数回反復処理できるようになります。
以上が「fetchAll()」の後に PDO 結果の配列ポインタをリセットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。