PDO循环播放并打印fetchAll

Chr*_*ris 9 php mysql database pdo fetchall

我无法从fetchAll获取数据以便有选择地进行打印.

在普通的mysql中我这样做:

$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)){
   $id = $row['id'];
   $n = $row['n'];
   $k = $row['k'];
}
Run Code Online (Sandbox Code Playgroud)

在PDO中,我遇到了麻烦.我绑定了params,然后我将获取的数据保存到$ rs中,就像上面一样,目的是以相同的方式循环它.

$sth->execute();
$rs = $query->fetchAll();
Run Code Online (Sandbox Code Playgroud)

麻烦的部分来了.我该怎么做PDO-wise来获得与上面的while循环相匹配的东西?!我知道我可以使用print_r()或dump_var,但这不是我想要的.我需要做我以前能用普通mysql做的事情,比如根据需要单独抓取$ id,$ n,$ k.可能吗?

提前致谢..

Zed*_*Zed 26

它应该是

while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
  $id = $row['id'];
  $n = $row['n'];
  $k = $row['k'];
}
Run Code Online (Sandbox Code Playgroud)

如果你坚持fetchAll,那么

$results = $query->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $row) {
   $id = $row['id'];
   $n = $row['n'];
   $k = $row['k'];
}
Run Code Online (Sandbox Code Playgroud)

PDO::FETCH_ASSOC 仅提取列名称并省略数字索引.

  • $ query-> rowCount()_ might_返回计数. (2认同)
  • 它不适用于SELECT语句.请参阅此问题:http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue/660032#660032 (2认同)