2012-02-18 59 views
0

爲了從數據庫中獲取的結果,你可以這樣做:fetchAll的要點是什麼?

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$sth->execute(); 
$result = $sth->fetchAll(); 
foreach($result as $r) { 
    echo "<pre>"; 
    print_r($r); 
    echo "</pre>"; 
} 

,但它似乎沒有使用fetchAll工作,例如:

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$result = $sth->execute(); 
foreach($result as $r) { 
    echo "<pre>"; 
    print_r($r); 
    echo "</pre>"; 
} 

這樣的區別是什麼?

+1

這很奇怪,因爲執行返回TRUE或FALSE。 http://www.php.net/manual/en/pdostatement.execute.php – malletjo 2012-02-18 01:58:38

+0

其實@racar – 2012-02-18 02:07:31

回答

3

fetchAll將從數據庫結果集的所有行中讀取數組,並將它們全部保存在內存中。迭代結果集將一次從服務器獲取一行,這將節省PHP端資源(但可能會在數據庫服務器上使用更多資源,具體取決於數據庫實現)。

1

首先,我假設你正在使用PHP PDO

隨着使用fetchall可以指定提取模式作爲參數,並使用fetchall返回的行提供了更大的靈活性和使用fetchall將從數據庫中讀取所有行,並轉化成一個陣列。

fetchall比我簡單的執行資源管理更有效率。執行返回的資源也是bool