使用PDO语法PHP检索数据时遇到问题

时间:2014-03-05 00:54:36

标签: php pdo mysqli fetchall

我是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会根据我读过的内容自动循环它们。

感谢您的帮助。

1 个答案:

答案 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.