mysqli函数bind_result、store_result和fetch之间的区别是什么?


What's the difference between the mysqli functions bind_result, store_result and fetch?

我遇到了问题,不知道何时以及在mysqli_stmt_execute之后调用什么
你怎么知道什么时候打电话

  1. mysqli_stmt_bind_result
  2. mysqli_stmt_store_result
  3. mysqli_stmt_fetch

mysqli_stmt_bind_result()告诉mysqli你想要填充的变量当你取一行,但它没有fetch()任何东西。在调用fetch之前,必须调用一次。

mysqli_stmt_store_result()设置了一个可选的行为,当您fetch()第一行时,客户端下载所有行,并在客户端缓存整个结果集(即PHP)。随后的fetch()调用将简单地遍历这个客户端缓存的结果集。但是设置这个选项本身也不会引起fetch()。这个函数完全是可选的。

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

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

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

您所询问的功能在此过程中具有以下角色:

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