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 相关文章推荐
如何将数据从文本导入到mysql
Oct 09 PHP
如何写php程序?
Dec 08 PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 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与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
Python给图像添加噪声具体操作
2019/03/03 Python
python动态进度条的实现代码
2019/07/03 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
母婴店促销方案
2014/03/05 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
合作意向书模板
2014/03/31 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL