看看这个代码
假设您正在php 中循环一组mysql查询结果
while($temp = mysqli_fetch_assoc($result))
{
echo $temp['id']; // ID Column
}
当执行$temp=mysqli_fetch_assoc($result)时,指针基本上会移动到下一条记录。有什么方法可以将指针重置为查询的开头吗?在这个循环结束后,mysqli_fetch_assoc($result)将只返回空行,使其再次不可用。那么,可能的解决方案是什么呢?
所以我今天在工作中遇到了这个问题,我最初找到的唯一解决方案是重新查询,或者在变量中使用mysql结果的临时副本。两者都没有吸引力。
有一个更简单的解决方案,那就是mysql_data_seek。
基本语法是mysqli_data_seek(数据,行)
所以在这种情况下,你只需要做
mysqli_data_seek($result,0)
$row=mysqli_fetch_assoc($result);// Will now return the first row.
以类似的方式,你也可以再次循环浏览它。
它与mysql_data_seek的工作原理类似。希望对你有所帮助。
- 不要再直接从数据库循环中打印数据了。学会将业务逻辑与演示分开
- 给自己一个数据库包装器,从代码中去掉所有这些丑陋的大量mysqli_fetch_assoc
- 将查询结果存储在数组中
- 可以任意多次使用此数组
像这个
$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