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 相关文章推荐
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
PHP 替换模板变量实现步骤
Aug 24 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
php实现mysql事务处理的方法
Dec 25 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
php中 $$str 中 "$$" 的详解
Jul 06 PHP
php cookie 详解使用实例
Nov 03 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP保留两位小数的几种方法
Jul 24 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
PHP 对象继承原理与简单用法示例
Apr 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
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
PHP对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python3访问sina首页中文的处理方法
2014/02/24 Python
python调用新浪微博API项目实践
2014/07/28 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
python实现动态数组的示例代码
2019/07/15 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
Python执行时间的几种计算方法
2020/07/31 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
工商企业管理专业自荐信范文
2014/04/12 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
学习计划是什么
2019/04/30 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫