php - 当使用mysqli_fetch_assoc(结果)时,结果会怎样?

时间:2009-11-26 14:43:34

标签: php mysql

当我有这样的事情时:

$row = mysqli_fetch_assoc($result);

$ result现在少了一行吗? 如果我循环mysqli_fetch_assoc通过所有$result,之后是否会为空?

3 个答案:

答案 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);

请参阅:http://php.net/manual/en/mysqli-result.free.php