不完全确定原因,但我今天已经看过很多次了。
global $connection;
$sql = "SELECT * FROM table";
$result = $connection->query($sql);
$rows = array();
while ($row = mysqli_fetch_assoc($result)) {
$rows[] = $row;
}
return $rows;
为什么不使用 fetch_all
的内置功能global $connection;
$sql = "SELECT * FROM table";
$result = $connection->query($sql);
return $result->fetch_all(MYSQLI_ASSOC);
这不会导致while循环不必要吗? 有什么好处? 速度差异?
答案 0 :(得分:2)
这里有一些有效的陈述..但只是在mysqli_fetch_all文档中添加它(http://www.php.net/manual/en/mysqli-result.fetch-all.php):
由于mysqli_fetch_all()将所有行作为数组返回到一个数组中 步骤,它可能比一些类似的功能消耗更多的内存,如 mysqli_fetch_array(),它一次只返回一行 结果集。 此外,如果您需要迭代结果集,那么 将需要一个循环结构,这将进一步影响性能。 出于这些原因,mysqli_fetch_all()只应该在那些中使用 将获取的结果集发送到另一个层的情况 用于处理。
粗体部分表示如果他在每次fetch_assoc之后进行一些处理:
while ($row = mysqli_fetch_assoc($result)) {
$rows[] = $row;
... //im doing stuff with $row here
}
他可以获得比使用mysqli_fetch_all函数(它必须遍历以获取所有行)更好的性能,然后再进行另一个循环来处理每一行。
至于其他一些速度分析此博客文章 - > http://blog.ulf-wendel.de/2007/php-mysqli_fetch_all/有点过时(2007年),但在比较这两种方法方面做得很好。
答案 1 :(得分:1)
它可能是在$ mysqli出现之前实现的,然后是$ mysqli,以及fetch_all功能,开发人员很懒,看到这将是更新代码的最简单方法。