Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysqli_fetch_assoc($result),指针移动到下一条记录。有没有办法重置指向查询结果开头的指针?_Php_Mysql_Mysqli - Fatal编程技术网

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

Php Mysqli_fetch_assoc($result),指针移动到下一条记录。有没有办法重置指向查询结果开头的指针?,php,mysql,mysqli,Php,Mysql,Mysqli,看看这个代码 假设您正在php中循环一组mysql查询结果 while($temp = mysqli_fetch_assoc($result)) { echo $temp['id']; // ID Column } 当您执行$temp=mysqli\u fetch\u assoc($result)时,指针基本上会移动到下一条记录。有没有办法重置指向查询开始的指针?在这个循环结束后,mysqli_fetch_assoc($result)将只返回空行,使其再次无法使用。那么可能的解决方案是什么呢

看看这个代码

假设您正在php中循环一组mysql查询结果

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

当您执行$temp=mysqli\u fetch\u assoc($result)时,指针基本上会移动到下一条记录。有没有办法重置指向查询开始的指针?在这个循环结束后,mysqli_fetch_assoc($result)将只返回空行,使其再次无法使用。那么可能的解决方案是什么呢?

所以我今天在工作中遇到了这个问题,我最初找到的唯一解决方案是重新查询,或者在变量中使用mysql result的临时副本。这两个都没有吸引力

有一个更简单的解决方案,就是mysql\u data\u seek

基本语法是mysqli_data_seek(数据,行)

所以在这种情况下,你就这么做

mysqli_data_seek($result,0)
$row=mysqli_fetch_assoc($result);// Will now return the first row.
以类似的方式,您也可以再次循环

它与mysql\u data\u seek的工作原理类似。希望能有所帮助

  • 停止直接从数据库循环中打印数据。学习将业务逻辑与表示分离
  • 为自己准备一个数据库包装器,从代码中去除所有这些丑陋的mysqli\u fetch\u 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
    

    如果再看到一个人使用不推荐的mysql驱动程序,我的大脑就会爆炸。我确实使用了mysqli一个……正如我所说,这是关于最初的问题。无论如何,我会做必要的编辑。你链接的问题是相当虚假的。结果不会从你的结果集中随机消失。@lvaroG.Vicario-我有点同意,只是想说这是对那里的评论的后续。删除了链接,但我确实被这个问题困扰了很长一段时间。有趣的解决方案。而且也很整洁。