我是PDO语法的新手,我喜欢学习曲线!我正在重构代码 - 从古老的mysqli_ *方法迁移。
可以预见的是,我遇到了一些障碍,成为一名新手。其中一个重要的是(原谅,如果这是一个愚蠢的问题)从数据库中检索数据并在页面上回显它。以下是我到目前为止的情况:
$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 :(得分:2)
仔细阅读d 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.