2013-05-13 139 views
0

下面的代碼給了我一個包含description的數組$aPDO :: FETCH_COLUMN沒有任何東西

$stmt = $dbh->prepare("SELECT description, id 
    FROM money_items"); 
$stmt->execute(); 
$a = $stmt->fetchAll(PDO::FETCH_COLUMN, 0); 
$id = $stmt->fetchAll(PDO::FETCH_COLUMN, 1); 

$id陣列空白。

Array 
    (
    ) 

如果我刪除了$a = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);線上,$id陣列出來罰款。我只允許從結果中獲取一列嗎?

+0

@TobyAllen那麼,這爲問題提供了一個解決方案。謝謝!但爲什麼第二個陣列空出來? – jimmy 2013-05-13 20:58:07

+0

第一次調用'fetchAll'會消耗查詢中的所有數據,所以當第二次調用的時間到來時,它沒有消耗任何東西,因此是空的結果。 – xPheRe 2014-05-21 09:03:51

回答

1

你正在尋找的是

$results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

這將所有列和所有行獲取到一個數組 -

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

雖則回答您的實際問題,我會在語句上調用的FetchAll函數會遍歷所有行,因此當您讀取第二列時,數組中的內部指針會在最後。

+0

謝謝!是否有命令重新將指針重置爲0行? – jimmy 2013-05-13 21:13:26

+0

有但我不知道,如果你通過php.net上的pdo文檔看,你應該找到它。 – 2013-05-13 21:16:44