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 自写函数代码 获取关键字 去超链接
Feb 08 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
使用php判断网页是否gzip压缩
Jun 25 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
详解PHP归并排序的实现
Oct 18 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
Dec 08 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
laravel5实现微信第三方登录功能
Dec 06 PHP
Laravel解决nesting level错误和隐藏index.php的问题
Oct 12 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
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
微信小程序签到功能
2018/10/31 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
Python入门教程之运算符与控制流
2016/08/17 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
基于python实现操作redis及消息队列
2020/08/27 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
我们的节日清明节活动总结
2014/04/30 职场文书
2014年管理工作总结
2014/11/22 职场文书
团代会闭幕词
2015/01/28 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
运动会加油稿50字
2015/07/21 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP