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初学者最感迷茫的问题小结
Mar 27 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
php编写一个简单的路由类
Apr 13 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
Jun 01 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
Sep 27 PHP
smarty中js的调用方法示例
Oct 27 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 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
phpmyadmin的#1251问题
2006/11/25 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
jquery 防止表单重复提交代码
2010/01/21 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
zbar解码二维码和条形码示例
2014/02/07 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
多个应用共存的Django配置方法
2018/05/30 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python中pow函数用法及功能说明
2020/12/04 Python
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
中英双版中文教师求职信
2013/10/27 职场文书
推荐信格式要求
2014/05/09 职场文书
计划生育工作汇报
2014/10/28 职场文书