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与SQL注入攻击[三]
Apr 17 PHP
关于PHP语言构造器介绍
Jul 08 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
PHP中上传多个文件的表单设计例子
Nov 19 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
php nginx 实时输出的简单实现方法
Jan 21 PHP
PHP实现小程序批量通知推送
Nov 27 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 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
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
在python中的socket模块使用代理实例
2014/05/29 Python
Python运算符重载用法实例
2015/05/28 Python
深入解析Python编程中super关键字的用法
2016/06/24 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
python实现最小二乘法线性拟合
2019/07/19 Python
python通过cython加密代码
2020/12/11 Python
python 实现有道翻译功能
2021/02/26 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
给排水工程师岗位职责
2013/11/21 职场文书
员工培训邀请函
2014/01/11 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
给面试官的感谢信
2014/02/01 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
逃课检讨书
2015/01/26 职场文书
观后感的写法
2015/06/19 职场文书