问一下关于mysqli的store_result()和PDO的fetch_all()的区别 这两个函数的功能都是一次性把结果集取回到本地吧?那为什么store_result()在教材上写的是可以提高脚本效率,而fetch_all()是不建议使用,因为它的效率低。为什么两个功能一样的函数,会有这么大不同呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哪里一样了,PDO的fetchAll()和mysqli的fetch_all()差不多一个功能。都是将结果集全部转换为数组或对象。但store_result()就是另一回事了:如果需要对所有记录而不只是一小部分进行处理,可以调用mysqli_stmt对象中的store_result()方法,把所有结果一次全部传回到PHP程序中。这样做不仅更有效率,而且能减轻服务器的负担。store_result()方法是可选的,除了读取数据不改变任何东西。 它没放在一起,只是我觉得它对这两个函数的功能解释差不多。那也就是store_result()是把结果集传给php程序,而fetch_all()是把结果集转换成数组是吗? 对,再复制粘贴点说明 默认情况下,SELECT查询结果将留在MySQL服务器上,等待fetch()方法把记录逐条取回到PHP程序中 如果获取SELECT语句查找到了多少条记录,可以从mysqli_stmt对象中的num_rows属性中检索出来。但是,这个属性只有在提前执行过store_result()方法,将全部查询结果传回到PHP程序中的情况下才可以使用。 通常情况下,查询所产生的结果集是存放在 mysql 那边的每当执行 fetch_array 时都需要到 mysql 的缓冲区中去提取数据store_result (存储资源)可以将查询的结果集一次性提取到 php 的缓冲区来这样,当执行 fetch_array 时就不需要再到 mysql 那边去了,直接就在 php 的缓冲区中提取数据通常我们会用一个循环把查询结果独到数组中去,尤其是在使用模板引擎时更是这样while($row = mysqli_fetch_array($rs)) { $res[] = $row;}这时,fetch_all 就有用武之地了!他直接从查询结果集构造出数组,不劳烦你再一个个循环了函数既然存在,就有存在的理由,不能以自己的喜好来褒贬他们,尤其是在授之以渔的时候 哦,那假如我现在要从结果集中提取所有行,下面这两种方式,是不是从理论上效率应该相同?$stmt = $link -> prepare('select * from test');$stmt -> execute(); $stmt -> fetch_all();$stmt = $link -> prepare('select * from test');$stmt -> execute();$stmt -> store_result();$stmt -> bind_result('is', $id, $name);while($row = $stmt -> fetch()) { ...} PHP求助 global 全局变量得不到数据 php中form的简单问题 session过期时间的问题,困惑! 用哪种php框架开发好啊?美工和程序分离的。 我用VB写的天气预报程序,大家来看一下! 关于这个电子商店的程式已经安装成功了,但用户注册后却不能发邮件到用户的信箱! 大型新闻首页,用什么方法调入数据比较快,欢迎来讨论! 想学习php,mysql请大家推荐几本书!我有asp的编程基础。谢谢! 小弟非常急,请高手看一看如下代码那里出错误,请指教,在线等待,先谢了。 【讨论】开始有点烦面向对象了,不知道你们怎么看? php导入excel到mysql 如何删除空行
但store_result()就是另一回事了:
如果需要对所有记录而不只是一小部分进行处理,可以调用mysqli_stmt对象中的store_result()方法,把所有结果一次全部传回到PHP程序中。这样做不仅更有效率,而且能减轻服务器的负担。store_result()方法是可选的,除了读取数据不改变任何东西。
默认情况下,SELECT查询结果将留在MySQL服务器上,等待fetch()方法把记录逐条取回到PHP程序中
如果获取SELECT语句查找到了多少条记录,可以从mysqli_stmt对象中的num_rows属性中检索出来。但是,这个属性只有在提前执行过store_result()方法,将全部查询结果传回到PHP程序中的情况下才可以使用。
每当执行 fetch_array 时都需要到 mysql 的缓冲区中去提取数据store_result (存储资源)
可以将查询的结果集一次性提取到 php 的缓冲区来
这样,当执行 fetch_array 时就不需要再到 mysql 那边去了,直接就在 php 的缓冲区中提取数据通常我们会用一个循环把查询结果独到数组中去,尤其是在使用模板引擎时更是这样
while($row = mysqli_fetch_array($rs)) {
$res[] = $row;
}
这时,fetch_all 就有用武之地了!他直接从查询结果集构造出数组,不劳烦你再一个个循环了
函数既然存在,就有存在的理由,不能以自己的喜好来褒贬他们,尤其是在授之以渔的时候
$stmt -> execute();
$stmt -> fetch_all();$stmt = $link -> prepare('select * from test');
$stmt -> execute();$stmt -> store_result();
$stmt -> bind_result('is', $id, $name);
while($row = $stmt -> fetch()) {
...
}