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 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
关于svn冲突的解决方法
Jun 21 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
smarty简单入门实例
Nov 28 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
PDO::commit讲解
Jan 27 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
PHP fopen中文文件名乱码问题解决方案
Oct 28 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 has encountered a Stack overflow问题解决方法
2014/11/03 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
Python 的类、继承和多态详解
2017/07/16 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
python爬虫要用到的库总结
2020/07/28 Python
Python datetime 如何处理时区信息
2020/09/02 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
人力资源经理自我评价
2014/01/04 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
考博专家推荐信
2014/05/10 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
教师考核评语大全
2014/12/31 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
教师理论学习心得体会
2016/01/21 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
Python Numpy库的超详细教程
2022/04/06 Python
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server