PHP PDO fetchAll() 和直接使用 foreach 循环的区别

3
这两者之间有什么区别吗:
$stmt = $db->prepare('SELECT * FROM ARTICLES');
$stmt->execute();

foreach ($stmt as $article) {
    echo $article['title'];
}

并且

$stmt = $db->prepare('SELECT * FROM ARTICLES');
$stmt->execute();

$articles = $stmt->fetchAll();
foreach ($articles as $article) {
    echo $article['title'];
}

这两种方法之间有什么主要区别吗?

编辑:我只是在问,因为对我来说它们都似乎起到相同的作用。


2
是的,第一个会抛出错误,因为您没有获取任何内容。至少从您发布的内容来看是这样的。 - Funk Forty Niner
是的,这有很大的区别。 - Masivuye Cokile
为什么不试一下,看看呢? - Andy
1
这就是为什么我在问。因为两者都一样。:( - petek
1
@Fred-ii- 你确定吗? - Don't Panic
1个回答

3
唯一的区别是前者不会像后者那样消耗额外的内存来返回记录。然而,考虑到通常不应该获取超过单个HTML页面所能显示的记录数量,因此这种差异被认为是可以忽略的。

非常感谢,谢谢您提供的链接。里面有很多有用的信息,我可以从中学习 :) 编辑:7分钟后将标记为答案。^^ - petek
谢谢给这个答案点赞的人,但我更希望这个赞能给问题本身。 - Your Common Sense
那么,while循环是迭代结果的最佳方式吗?或者我使用其中的3个之一并不重要吗? - petek
使用fetch的while循环与foreach类似,因此何种方式使用并不重要。 - Your Common Sense

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接