获取数据库的多个列

时间:2013-01-24 17:12:48

标签: php mysql pdo

我需要获取数据库的一个完整列并且只获取该列,并将其作为数组返回。我使用$qarr1 = $stmt->fetchAll(PDO::FETCH_COLUMN);,效果很好。我现在需要从该数据中提取第二列并将其保存为单独的数组,但由于游标问题,我无法使用fetchAll()。我仍然是PHP的新手,并不太了解光标的整个概念,而且我很难理解fetch()的参数。有人能够解释我能做什么而不是使用fetchAll()吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试使用$stmt->fetchAll(PDO::FETCH_ASSOC); 但如果你真的想避免fetchAll(),那么只需遍历每一行。

$arr = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  $arr[] = $row;
}

答案 1 :(得分:1)

我认为最好的方法是使用PDO::FETCH_NUM来获取类似于FETCH_ASSOC的所有结果,但不是关联索引,而是使用数字索引,然后使用php函数array_column(myArray, columnNumber)你可以抓住每列到你想要的任何变量。这里有一个代码示例:

// grab all columns and put index numbers for each column
$allColumns = $user_database->fetchAll(PDO::FETCH_NUM);

// grab first column
$con = array_column($allColumns, 0);
// grab second column
$gan = array_column($allColumns, 1);

// this will output the variables so you can see what was grabbed   
echo '<pre>$con:  '; var_dump($con); 
echo '<pre>$gan:  '; var_dump($gan);

我希望这会有所帮助。