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 相关文章推荐
PHP5中MVC结构学习
Oct 09 PHP
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 PHP
php数组总结篇(一)
Sep 30 PHP
php中获取指定IP的物理地址的代码(正则表达式)
Jun 23 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
Laravel开启跨域请求的方法
Oct 13 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Python函数和模块的使用总结
2019/05/20 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
python实现最短路径的实例方法
2020/07/19 Python
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
公司员工的自我评价范例
2013/11/01 职场文书
临床护理求职信
2014/04/26 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
Python中else的三种使用场景
2021/06/16 Python