PHP と MySQL を使用してデータベースを操作する場合、同じクエリ結果に複数回アクセスする必要がある状況が発生することがあります。 mysqli_fetch_array() 関数を使用します。ただし、同じ結果セットに対して mysqli_fetch_array() を複数回使用しようとすると、空の出力が返されます。
これは、mysqli_fetch_array() が結果セット内のポインターをフェッチし、進めるためです。したがって、同じ結果を再度フェッチしようとすると、取得するデータが残りません。
この問題を解決するには、データ操作を出力から分離する必要があります。まず、データベースからすべてのデータをフェッチし、配列に保存します:
<code class="php">$db_res = mysqli_query($db_link, $sql); $data = []; while ($row = mysqli_fetch_assoc($db_res)) { $data[] = $row; }</code>
注: PHP 5.3 以降では、明示的なループの代わりに fetch_all() を使用できます:
<code class="php">$db_res = mysqli_query($db_link, $sql); $data = $db_res->fetch_all(MYSQLI_ASSOC);</code>
データを配列に保存したら、必要に応じて何度でも繰り返すことができます:
一番上の行:
<code class="php">foreach ($data as $row) {</code>
以上が同じ結果セットに対して「mysqli_fetch_array()」を複数回使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。