PHP と MySQL を使用してデータベースを操作する場合、同じクエリ結果に複数回アクセスする必要がある状況が発生することがあります。 mysqli_fetch_array() 関数を使用します。ただし、同じ結果セットに対して mysqli_fetch_array() を複数回使用しようとすると、空の出力が返されます。
これは、mysqli_fetch_array() が結果セット内のポインタをフェッチして進めているためです。したがって、同じ結果を再度フェッチしようとすると、取得するデータが残りません。
この問題を解決するには、データ操作を出力から分離する必要があります。まず、データベースからすべてのデータをフェッチし、配列に保存します。
$db_res = mysqli_query($db_link, $sql);
$data = [];
while ($row = mysqli_fetch_assoc($db_res)) {
$data[] = $row;
}
注: PHP 5.3 以降では、明示的なループの代わりに fetch_all() を使用できます。
$db_res = mysqli_query($db_link, $sql);
$data = $db_res->fetch_all(MYSQLI_ASSOC);
データを配列に保存したら、必要なだけ繰り返し処理できます:
一番上の行:
foreach ($data as $row) {
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3