PDO 循环并打印 fetchAll
Posted
技术标签:
【中文标题】PDO 循环并打印 fetchAll【英文标题】:PDO looping through and printing fetchAll 【发布时间】:2010-12-03 22:35:55 【问题描述】:我无法从 fetchAll 获取数据以选择性地打印。
在普通的mysql中我是这样做的:
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs))
$id = $row['id'];
$n = $row['n'];
$k = $row['k'];
在 PDO 中,我遇到了麻烦。我绑定了参数,然后像上面一样将获取的数据保存到 $rs 中,目的是以相同的方式循环它..
$sth->execute();
$rs = $query->fetchAll();
现在问题来了。我该怎么做才能获得与上面的while循环匹配的东西?!我知道我可以使用 print_r() 或 dump_var,但这不是我想要的。我需要做以前可以用常规 mysql 做的事情,比如根据需要单独获取 $id、$n、$k。有可能吗?
提前谢谢..
【问题讨论】:
【参考方案1】:应该是
while ($row = $query->fetch(PDO::FETCH_ASSOC))
$id = $row['id'];
$n = $row['n'];
$k = $row['k'];
如果你坚持fetchAll
,那么
$results = $query->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $row)
$id = $row['id'];
$n = $row['n'];
$k = $row['k'];
PDO::FETCH_ASSOC
仅获取列名并省略数字索引。
【讨论】:
非常感谢您的帮助。我选择了 2,因为在循环之前我也必须计算它。所以将它存储在 $results 之前更有意义。 $query->rowCount() 可能返回计数。 它不适用于 SELECT 语句。看到这个问题:***.com/questions/460010/… 你在这一行多了一个右括号:$results = $query->fetchAll(PDO::FETCH_ASSOC));
while 循环没有显示任何内容,至少它也没有中断进程。 foreach 循环显示结果(我使用了一个虚拟查询SHOW TABLES
,这应该不是问题)。我对 foreach 解决方案很好,只是想知道为什么。以上是关于PDO 循环并打印 fetchAll的主要内容,如果未能解决你的问题,请参考以下文章
PHP使用pdo连接access数据库并循环显示数据操作示例