PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别

2015-01-24信息快讯网

这篇文章主要介绍了PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别,本文给出了这两个参数的5个区别,需要的朋友可以参考下

虽然nosql变得流行,但是我感觉sql还是主流
今天在翻php manul的时候,发现mysqli 的查询可以传递一个有意思的参数

@mysqli_query($this->sql,$SQL,($method ? MYSQLI_USE_RESULT : MYSQLI_STORE_RESULT));

在php manul上面对这两个参数是这样解释的。

Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.

如果什么也不传,那就默认为MYSQLI_STORE_RESULT。

在phpmanul上面有人说了这样一句话If we have to retrieve large amount of data we use MYSQLI_USE_RESULT

其实这两个参数的区别还是很大的。

(1)区别在于从服务器上检索结果集的行。
(2)MYSQLI_USE_RESULT 启动查询,但实际上并未获取任何行
(3)MYSQLI_STORE_RESULT 立即检索所有的行
(4)MYSQLI_STORE_RESULT 从服务器上检索结果集时,就提取了行,并为之分配内存,存储到客户机中,随后调用 mysqli_fetch_array()就再也不会返回错误,因为它仅仅是把行脱离了已经保留结果集的数据结构,mysqli_fetch_array()返回 NULL始终表示已经到达结果集的末端。
(5)MYSQLI_USE_RESULT 本身不检索任何行,而只是启动一个逐行的检索,就是说必须对每行调用 mysqli_fetch_array()来自己完成。既然如此,虽然正常情况下,mysqli_fetch_array()返回NULL仍然表示此时已到达结果集的末端,但也可能表示在与服务器通信时发生错误。

总结

与MYSQLI_USE_RESULT相比,MYSQLI_STORE_RESULT 有着较高的内存和处理需求,因为是在客户机上维护整个结果集,所以内存分配和创建数据结构的耗费是非常巨大的,如果想一次检索多个行,可用 MYSQLI_USE_RESULT。

MYSQLI_USE_RESULT有着较低的内存需求,因为只需给每次处理的单行分配足够的空间。这样速度就较快,因为不必为结果集建立复杂的数据结构。另一方面,MYSQLI_USE_RESULT把较大的负载加到了服务器上,它必须保留结果集中的行,直到客户机看起来适合检索所有的行。

php+mysql实现无限分类实例详解
php在linux下检测mysql同步状态的方法
php+mysql删除指定编号员工信息的方法
php实现redis数据库指定库号迁移的方法
php导入excel文件到mysql数据库的方法
php+mysql查询优化简单实例
php计划任务之ignore_user_abort函数实现方法
php+mysqli实现批量替换数据库表前缀的方法
PHP中使用xmlreader读取xml数据示例
VPS中使用LNMP安装WordPress教程
PHP中mysqli_affected_rows作用行数返回值分析
PHP中require和include路径问题详解
PHP使用array_multisort对多个数组或多维数组进行排序
PHP连接和操作MySQL数据库基础教程
PHP fastcgi模式上传大文件(大约有300多K)报错
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
PHP获取mysql数据表的字段名称和详细信息的方法
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
安装ImageMagick出现error while loading shared libraries的解决方法
PHP实现自动登入google play下载app report的方法
PHP中auto_prepend_file与auto_append_file用法实例分析
PHP提示Cannot modify header information - headers already sent by解决方法
PHP利用MySQL保存session的实现思路及示例代码
PHP使用Mysql事务实例解析
CodeIgniter错误mysql_connect(): No such file or directory解决方法
PHP处理Json字符串解码返回NULL的解决方法
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
php中的curl_multi系列函数使用例子
PHP使用CURL_MULTI实现多线程采集的例子
PHP以mysqli方式连接类完整代码实例
浅析application/x-www-form-urlencoded和multipart/form-data的区别
©2014-2024 dbsqp.com