从结果集中选择列到数组中

时间:2011-09-25 10:49:17

标签: php mysql pdo

我正在尝试将PDO结果集中的一些列放到单独的数组中,因此产生了这样的结果:

<?php
  $query = 'SELECT col1,col2 FROM tbl_imaginary';
  ...
  $col1 = array(col1_row1, col1_row2,...);
  $col2 = array(col2_row1, col2_row2,...);
?>

我知道我可以使用fetch遍历结果集,但使用fetchAll(PDO:FETCH_COLUMN)似乎更有效。但是,一旦执行此操作,除非再次对语句句柄执行execute(),否则无法再次执行此操作。我知道,你不能清空饼干罐然后再做同样的事情,除非你再次填满它 - 有点事。所以我想我会复制语句句柄对象并获取它的列:

<?php
  $sh->execute();
  for ($i=0; $i<$sh->columnCount(); $i++)
  {
     $tmp_sh = $sh;
     $output[$i] = $tmp_sh->fetchAll(PDO::FETCH_COLUMN);
  }
?>

然而,这就像在原始语句句柄本身上执行fetchAll()一样,只输出第一列而不是第二列。

如果有人愿意向我解释这种行为和/或提出解决方案,我将非常感激。

非常感谢你的时间。

编辑:所以基本上我想从一个结果集中获得2个(或更多)列作为单独的数组,就像你在1个单独的列上执行2个(或更多个)单独查询一样。以上内容主要是对我到目前为止如何尝试这样做的解释。

1 个答案:

答案 0 :(得分:1)

为什么需要两个独立的阵列?

$statement = $db->prepare('SELECT col1, col2 FROM tbl_imaginary');
$statement->execute();

foreach($sth->fetchAll() as $row) {
    echo $row['col1'], $row['col2'];
}