我正在尝试将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个(或更多个)单独查询一样。以上内容主要是对我到目前为止如何尝试这样做的解释。
答案 0 :(得分:1)
为什么需要两个独立的阵列?
$statement = $db->prepare('SELECT col1, col2 FROM tbl_imaginary');
$statement->execute();
foreach($sth->fetchAll() as $row) {
echo $row['col1'], $row['col2'];
}