mysqli函数bind_result,store_result和fetch有什么区别?

时间:2013-06-13 19:23:40

标签: php mysqli prepared-statement

我在mysqli_stmt_execute之后知道何时何地打电话时遇到问题 你怎么知道什么时候打电话

  1. mysqli_stmt_bind_result
  2. mysqli_stmt_store_result
  3. mysqli_stmt_fetch

2 个答案:

答案 0 :(得分:16)

mysqli_stmt_bind_result()告诉mysqli在获取行时要填充哪个变量,但它还没有fetch()。在调用fetch之前,必须调用一次。

mysqli_stmt_store_result()设置一个可选行为,以便客户端在fetch()第一行时下载所有行,并将整个结果集缓存在客户端(即PHP)中。后续的fetch()调用将简单地遍历此客户端缓存的结果集。但是设置此选项本身也不会导致fetch()。此功能完全是可选的。

mysqli_stmt_fetch()返回结果集中的下一行,并使其存储在绑定变量中。对于结果集的每一行,必须在循环中调用此函数。也就是说,直到fetch返回false。

答案 1 :(得分:5)

查询SQL数据库的过程包含以下步骤:

  • 将查询发送到SQL Server
  • SQL Server解析查询并收集请求的结果集
  • 将找到的结果集数据从SQL服务器传输到PHP
  • 以某种方式将数据放入PHP变量,以便脚本可以使用它们

您询问的函数在此过程中具有以下角色:

  • store:立即将所有行从MySQL数据库传输到PHP的内存中;通常没有实际效果,无论如何都会自动完成
  • bind:绑定变量,这样当你调用fetch()时,这些变量包含结果数据;即告诉PHP应将结果放入哪些变量
  • fetch:“读取”结果集中的一行并将其存储在您之前绑定的变量中;如果数据不在PHP的内存中,那么此时它将从SQL服务器传输