当我有这样的事情时:
$row = mysqli_fetch_assoc($result);
$ result现在少了一行吗?
如果我循环mysqli_fetch_assoc
通过所有$result
,之后是否会为空?
答案 0 :(得分:5)
$result
是对SQL结果集的引用,其中包含为响应查询而返回的所有行。调用mysqli_fetch_assoc
只是将结果集的内部指针向下移动到行列表的下方,最终指向NULL
(列表的末尾)。行仍然存在,你还没有删除它们:你只是遍历了列表,你可以通过使用mysqli_data_seek
之类的东西重新运行它们来重置指向特定行的内部指针。
要清除$result
,您需要致电mysqli_free_result
以“释放”结果集。
答案 1 :(得分:3)
$ result是resource pointer,无法向其添加或删除数据。它会给你一个结果,并在内部移动到下一个记录。这样的结果是不受影响的。
manual page提供了其他信息。
答案 2 :(得分:1)
在执行该行之后,$result
仍然作为资源指针,并且可以由适用于进一步处理的其他函数使用$result
作为对数据库的引用。
您可以取消设置,或mysqli_free_result($result);