【问题标题】:What is meant by "prepared statement has pending or unread results"?“准备好的语句有待处理或未读的结果”是什么意思?
【发布时间】:2015-10-25 14:02:35
【问题描述】:
PHP 手册上的内容以及手册中的一条评论说:
关闭一个准备好的语句。
mysqli_stmt_close() 也释放
语句句柄。如果当前
语句有待处理或未读
结果,这个函数取消了它们,所以
可以执行下一个查询。
评论:
如果你在重复一个语句
使用 bind_param 的循环等等
在里面进行更大的操作。一世
thougt id 会很好清理它
使用 stmt-> 关闭。但它总是坏掉
aprox 后出现错误。 250
操作。正如我尝试过的那样
stmt->reset 它对我有用。
这里我不明白“prepared statement”是什么意思
有待处理或未读结果”?
【问题讨论】:
标签:
mysql
prepared-statement
【解决方案1】:
运行查询的 RDBMS 可以在处理整个数据集之前返回数据。也可能有它尚未读取的记录。
已经读取的记录和待处理的记录都必须保存在数据库服务器的某个资源中,通常称为“光标”。
您使用 PHP 的 MySQi 包装器执行应用程序代码语句,将这些记录从服务器的光标读取到应用程序的内存中,这些包装器称为 fetch 方法。
现在执行查询后,您不必获取任何或所有这些结果。所以无论哪种方式,在读取查询结果之后,执行mysqli_stmt_close() 告诉服务器它可以丢弃游标,即从内存中删除已经读取的记录并取消可选的仍在运行的查询。
所以:
- 未读结果:从数据库中获取,但客户端未读取。
- 待定结果:查询运行完成后将包含在结果集中的记录。