【问题标题】:Trouble retrieving data using PDO syntax, PHP使用 PDO 语法检索数据时遇到问题,PHP
【发布时间】:2014-03-05 00:54:35
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

  • var_dump($idRetrieved);
  • 仅供参考 - mysqli_* 方法远非过时

标签: php pdo mysqli fetchall


【解决方案1】:

仔细阅读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.

【讨论】:

  • 谢谢。我的语法没有包含 $idRetrieved 和 ['value'] 之间的 [0]。这使它起作用了!
猜你喜欢
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 2016-05-24
  • 1970-01-01
相关资源
最近更新 更多