PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别


Posted in PHP onSeptember 29, 2014

虽然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 相关文章推荐
PHP 和 MySQL 基础教程(四)
Oct 09 PHP
PHP获取网站域名和地址的代码
Aug 17 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
Codeigniter发送邮件的方法
Mar 19 PHP
php控制文件下载速度的方法
Mar 24 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
php中file_get_contents()函数用法实例
Feb 21 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 #PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 #PHP
初识PHP
Sep 28 #PHP
浅谈php和.net的区别
Sep 28 #PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 #PHP
Drupal简体中文语言包安装教程
Sep 27 #PHP
PHP常用编译参数中文说明
Sep 27 #PHP
You might like
javascript replace()正则替换实现代码
2010/02/26 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python列表推导式操作解析
2019/11/26 Python
python_mask_array的用法
2020/02/18 Python
Python PIL库图片灰化处理
2020/04/07 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
Python竟然能剪辑视频
2021/05/25 Python