首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqli_stmt_get_result和mysqli_stmt_store_result有什么区别?

问mysqli_stmt_get_result和mysqli_stmt_store_result有什么区别?
EN

Stack Overflow用户
提问于 2020-03-16 17:33:11
回答 1查看 918关注 0票数 3

在php文档中,它说:

mysqli_stmt_store_result -从准备好的语句中传输结果集。

mysqli_stmt_get_result -从准备好的语句中获取结果集。

我不清楚他们之间的区别,谁能详细说明一下吗?我见过mysqli_stmt_get_result和mysqli_fetch_assoc一起使用。但我还是不知道什么时候该用一种而不是另一种。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-16 18:25:01

mysqli_stmt_store_result()将结果集的所有行传输到PHP内存中。随后,“获取”行只是在内存中的结果集上迭代。这很好,除非结果集太大;它可能超过PHP内存限制。此函数只返回TRUE或FALSE。您可以从mysqli对象或语句对象调用它。

mysqli_use_result()不传输整个结果集。每次获取一行时,它都会单独调用MySQL服务器。这样,PHP内存就不必同时保存整个结果集。您可以处理每一行并丢弃它。当结果集很大时,这是有用的。此函数返回一个mysqli_result资源。您只能从mysqli对象调用它,而不能从语句对象调用它,因此它不能用于准备好的语句。

注意,在客户端(PHP)获取所有行之前,不能获取结果集中的行数。因此,尝试在获取之前读取mysqli_stmt_num_rows()返回0,尽管您知道结果中应该包含一些内容。使用存储结果函数意味着为此目的获取结果集。

mysqli_stmt_get_result()是mysqlnd驱动程序中较新的方法。此函数从准备好的语句中返回mysqli_result资源。这有助于在不使用mysqli_stmt_bind_result()的情况下编写fetch循环代码,有些人对此感到困惑。

mysqli_stmt_get_result()总是在内部调用存储结果,所以最好在PHP中有足够的内存来保存完整的结果集。在这种情况下,如果您使用预先准备好的语句,我不知道有任何方法可以逐行获取。您只需确保不运行具有大型结果集的SQL查询。

老实说,我在使用PHP时避免使用mysqli。我更喜欢PDO。很多用法更干净,也不那么让人困惑。我希望PHP在拒绝mysqli的同时也反对mysqli。或者至少明确声明PDO是首选的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60710601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档