2017-02-08 34 views
2

有这两者之间有什么区别:PHP PDO使用fetchall()与直接foreach循环

$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']; 
} 

是否有这两种方法之间的主要区别?

编辑:我只是问,因为两者似乎对我都一样。

+1

是;第一个将会抛出一个错误,因为你没有获取任何东西。至少,从你发布的内容。 –

+0

是的,有很大的区别 –

+0

为什么不试试看看? – Andy

回答

2

唯一的区别是前者doesn't consume extra memory用于像后者那样的返回记录。

但是,由于您通常不应该获取比单个HTML页面上显示的记录更多的记录,因此这种差异被认为是微不足道的。

+0

非常感谢你。谢谢你的联系。我可以从中学到很多有用的信息:)编辑:将标记为7分钟内的答案。 ^^ – bawsi

+0

谢谢谁高举这个答案,但我宁愿喜欢这个upvote来代替这个问题。 –

+0

那么while循环是否最好能够对结果进行迭代?或者3我使用哪一个不重要? – bawsi