2

このコードを見てください

phpでmysqlクエリ結果のセットをループしていると仮定します

while($temp = mysqli_fetch_assoc($result))
{
 echo $temp['id']; // ID Column
}

$ temp = mysqli_fetch_assoc($ result)を実行すると、基本的にポインターは次のレコードに移動します。クエリの開始へのポインタをリセットする方法はありますか?このループの終了後、mysqli_fetch_assoc($ result)は空の行のみを返すため、再び使用できなくなります。では、可能な解決策は何ですか?

4

2 に答える 2

2

だから私は今日仕事でこの問題に悩まされていました、そして私が最初に見つけた唯一の解決策は再クエリするか、変数でmysql結果の一時的なコピーを使用することでした。どちらも魅力的ではありませんでした。

これには、mysql_data_seekというはるかに簡単な解決策があります。

基本的な構文はmysqli_data_seek(data、row)です。

したがって、この場合は

mysqli_data_seek($result,0)
$row=mysqli_fetch_assoc($result);// Will now return the first row.

同様の方法で、もう一度ループすることもできます。

mysql_data_seekでも同様に機能します。お役に立てば幸いです。

于 2013-02-19T17:08:12.530 に答える
1
  1. データベースループから直接データを印刷するということをやめてください。ビジネス ロジックをプレゼンテーションから分離する方法を学びます。
  2. データベースラッパーを入手して、コードからこれらの醜い多数の mysqli_fetch_assoc をすべて取り除きます。
  3. クエリ結果を配列に格納します。
  4. この配列は何度でも使用できます。

このような

$data = $db->getAll("SELECT * FROM table");

foreach ($data as $row) // 1st iteration
foreach ($data as $row) // 2nd iteration
foreach ($data as $row) // and so on
于 2013-02-19T18:56:51.303 に答える