2017-02-08 36 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