Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取数据库的多个列_Php_Mysql_Pdo - Fatal编程技术网

Php 获取数据库的多个列

Php 获取数据库的多个列,php,mysql,pdo,Php,Mysql,Pdo,我需要获取数据库的一整列,并且只获取该列,然后将其作为数组返回。我使用的是$qarr1=$stmt->fetchAll(PDO::FETCH_列),它工作得很好。现在我需要从该数据中提取第二列并将其保存为单独的数组,但由于光标问题,我无法使用fetchAll()。我对PHP还是个新手,不太了解游标的整个概念,而且我很难理解它的参数。有人能解释我可以做什么而不是使用fetchAll()?你可以尝试使用$stmt->fetchAll(PDO::FETCH\u ASSOC) 但是如果您真的想避免fet

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

你可以尝试使用
$stmt->fetchAll(PDO::FETCH\u ASSOC)
但是如果您真的想避免
fetchAll()
,那么只需在每一行中循环

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

我认为最好的方法是使用
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);
//获取所有列并为每列输入索引号
$allColumns=$user\u database->fetchAll(PDO::FETCH\u NUM);
//抓住第一列
$con=array\u column($allColumns,0);
//抓住第二列
$gan=array\u column($allColumns,1);
//这将输出变量,以便您可以查看捕获的内容
回音“$con:”;var_dump($con);
回音“$gan:”;var_dump(加纳元);

我希望这会有所帮助。

您是否尝试过$stmt->fetchAll(PDO::FETCH_ASSOC)?返回整个数据库。有没有办法避免这种情况,或者这不是一个真正的问题?另外,如果我正确解释
print\r()
的输出,那么每一行都会被排序到一个数组中,而不是每一列。如果您只需要返回某些列,为什么不在查询端(如SELECT col1、col2)执行此操作,并且只会得到这两列
由于光标问题,我无法使用fetchAll()。。。什么意思?当我使用
fetchAll(PDO::FETCH_列,0)时;fetchAll(PDO::FETCH_列,6),第二个数组为空。据我所知,这是因为MySQL光标已经移动到了数据库的末尾,所以没有任何东西可以让它获取。fetchAll需要更多的资源。此外,如果您需要在返回结果的同时修改数组键,则无法使用fetchAll执行此操作,您仍然需要遍历所有