Mysqli_fetch_assoc($ result),指针移动到下一条记录。有没有办法将指针重置为查询结果的开头?

时间:2013-02-19 17:08:13

标签: php mysql mysqli

看一下这段代码

假设你在php

中循环一组mysql查询结果
while($temp = mysqli_fetch_assoc($result))
{
 echo $temp['id']; // ID Column
}

当你执行$ temp = mysqli_fetch_assoc($ result)时,指针基本上会移动到下一条记录。有没有办法将指针重置为查询的开头?在此循环结束后,mysqli_fetch_assoc($ result)将仅返回空行,使其再次无法使用。那么可能的解决方案是什么?

2 个答案:

答案 0 :(得分:1)

  1. 直接从数据库循环中退出打印数据。学习将业务逻辑与演示分开。
  2. 让自己成为一个数据库包装器,从代码中删除所有这些丑陋的mysqli_fetch_assoc。
  3. 将查询结果存储在数组中。
  4. 根据需要多次使用此数组。
  5. 喜欢这个

    $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
    

答案 1 :(得分:0)

所以我今天在工作中遇到了这个问题,我最初发现的唯一解决方案是重新查询,或者在变量中使用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的工作方式类似。希望它有所帮助。