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 相关文章推荐
解决GD中文乱码问题
Feb 14 PHP
php 小乘法表实现代码
Jul 16 PHP
Php获取金书网的书名的实现代码
Jun 11 PHP
php cookies中删除的一般赋值方法
May 07 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
php+ajax实现商品对比功能示例
Apr 13 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 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
2006/12/23 PHP
获取远程文件大小的php函数
2010/01/11 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
php时间戳转换的示例
2014/03/31 PHP
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Python实现京东秒杀功能代码
2019/05/16 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
python实现简单学生信息管理系统
2020/04/09 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
pandas分批读取大数据集教程
2020/06/06 Python
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
老人祝寿主持词
2014/03/28 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
摄影展策划方案
2014/06/02 职场文书
银行贷款委托书范本
2014/10/11 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
应收账款管理制度
2015/08/06 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python