2014-03-05 89 views
0

我是PDO語法的新手,我喜歡學習曲線!我正在重構代碼 - 從古老的mysqli_ *方法遷移過來。使用PDO語法檢索數據時遇到麻煩,PHP

可以預見,我遇到了一些困難,成爲新手。其中一個重要的是(原諒如果這是一個愚蠢的問題)從數據庫中檢索數據並在頁面上回顯出來。以下是我迄今爲止:

$getURLid = $_GET['id']; 
$idQuery = $connection->prepare("SELECT * FROM pages WHERE page_id = :getURLid"); 
$idQuery->execute(array(':getURLid' => $getURLid)); 
$idRetrieved = $idQuery->fetchAll(); // This is the part I'm unclear on. 

當我回聲$idRetrieved['value']頁面,什麼也不顯示。我錯過了一些東西或者誤解了它的工作原理。也許fetchAll不是我應該使用的。

如果是,是檢索所有行的循環嗎?我的印象是,fetchAll會根據我讀過的內容自動遍歷它們。

感謝您的幫助。

+0

' var_dump($ idRetrieved);' – zerkms

+0

FYI - 'mysqli_ *'方法遠非古老 – Phil

回答

2

請仔細閱讀doco的PDOStatement::fetchAll。它返回一個行數據的數組。

表示每行的數據類型取決於您的提取模式,默認爲PDO::FETCH_BOTH。這意味着每一行都是一個包含數字鍵和關聯鍵的數組。如果你只打算關聯方式訪問數據,我推薦使用PDO::FETCH_ASSOC,如

$idRetrieved = $idQuery->fetchAll(PDO::FETCH_ASSOC); 

那麼您需要要麼需要循環或通過其索引來訪問的每一行,如

foreach ($idRetrieved as $row) { 
    echo $row['value']; 
} 

// or 

echo $idRetrieved[0]['value']; // assuming there's at least one row. 
+0

謝謝。我的語法不包括$ idRetrieved和['value']之間的[0]。這使它工作! – gitlinggun