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 回答