我试图从PDO ResultSet中得到列数为单独的阵列,所以导致这样:从结果集选择列到数组
<?php
$query = 'SELECT col1,col2 FROM tbl_imaginary';
...
$col1 = array(col1_row1, col1_row2,...);
$col2 = array(col2_row1, col2_row2,...);
?>
我知道我可以遍历与获取结果集,但使用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(或更多)列作为单独的数组,就像你会在单个列上执行2个(或更多)个别查询一样。以上大部分是我迄今为止试图做到这一点的解释。
为什么你想在两个单独的数组列? – Eric
选择单独的列有什么意义? –
我有几个用途,其中之一是例如使用in_array($ col1)来检查表单复选框传递的值是否为有效值(复选框值偏离了同一列的加载)。现在,我可以使用2个查询来做到这一点,但是如果为了这个目的需要这两列(来自同一个表),那么如果可以用1来完成2个查询,似乎开销很大。 – NwN