2009-10-05 27 views
8

我無法從fetchAll獲取我的數據來選擇打印。PDO循環通道和打印獲取全部

在正常的MySQL我做這種方式:

$rs = mysql_query($sql); 
while ($row = mysql_fetch_array($rs)){ 
    $id = $row['id']; 
    $n = $row['n']; 
    $k = $row['k']; 
} 

在PDO,我有麻煩了。我綁定的參數,可以那麼我保存讀入數據到$ RS上面的一樣,通過它與循環以同樣的方式的目的..

$sth->execute(); 
$rs = $query->fetchAll(); 

現在到了最困難的部分。我該怎麼做PDO明智地得到匹配上面的while循環的東西?!我知道我可以使用print_r()或dump_var,但這不是我想要的。我需要做我以前能夠用普通的mysql做的事情,比如根據需要分別抓取$ id,$ n,$ k。可能嗎?

在此先感謝..

回答

26

應該

while ($row = $query->fetch(PDO::FETCH_ASSOC)) { 
    $id = $row['id']; 
    $n = $row['n']; 
    $k = $row['k']; 
} 

如果你堅持fetchAll,然後

$results = $query->fetchAll(PDO::FETCH_ASSOC); 
foreach($results as $row) { 
    $id = $row['id']; 
    $n = $row['n']; 
    $k = $row['k']; 
} 

PDO::FETCH_ASSOC只獲取列名,並省略了數字索引。

+0

非常感謝您的幫助。我和2一起去了,因爲在循環之前我必須把它計算在內。因此,之前將它存儲在$ results中更有意義。 – Chris 2009-10-05 14:11:15

+2

$ query-> rowCount()_might_返回計數。 – Zed 2009-10-05 14:22:52

+2

它不適用於SELECT語句。看到這個問題:http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue/660032#660032 – Imran 2009-12-15 04:49:43