Php 循环遍历数据库行并创建单个数组

Php 循环遍历数据库行并创建单个数组,php,Php,我有一个我搞不懂的问题 我循环浏览数据库中的行: $data = array(); while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)){ $data[] = $row; } $data现在在一个数组中包含一个数组,如何才能使它仍然只是一个数组 谢谢大家,这是因为每个$row都是一个关联数组。如果只希望数据是一列值的数组,请指定该列: $data = array(); w

我有一个我搞不懂的问题

我循环浏览数据库中的行:

    $data = array();

    while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)){

        $data[] = $row;
    }
$data
现在在一个数组中包含一个数组,如何才能使它仍然只是一个数组


谢谢大家,这是因为每个
$row
都是一个关联数组。如果只希望数据是一列值的数组,请指定该列:

$data = array();
while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)){
    $data[] = $row['column_name_you_want'];
}

这将获得所有列和行作为单个维度数组返回的所有值

$data = array();

while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)){
    $values = array_values($row);
    foreach($values as $value)
    {
        $data[] = $value;
    }
}
这是一个更明显的方式:

$data = array();

while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_NUMERIC){
  $data = array_merge( $data, array_values($row) );
}

我知道这是一个老问题,但我也在寻找解决办法。提出了以下对我有效的方法:

function mssql_query($conn, $query, array $bind = array()) {
    $stmt = sqlsrv_query($conn, $query, $bind);
    if( $stmt=== false ) {
        // do something with the error information
        // die(print_r(sqlsrv_errors(), true));
        return array();
    }
    sqlsrv_execute($stmt);
    $data = array();
    while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
        array_push($data, $row);
    }
    return $data;
}
可直接在foreach循环中使用:

foreach(mssql_query($conn, $query) as $row) {
    echo $row['column'];
}
或分配给变量进行计数等

$conn当然是连接(来自PHP.net):


一系列什么?您可能希望通过数据库id为数据[]编制索引,对吗?@galambalazs-这是我数据库中的一个行数组。我只想把它作为一个数组,以便以后可以更轻松地处理它。没有真正的需要,但我想知道如何在需要的情况下做到这一点。太棒了,谢谢。键入所有列名会很枯燥,但我知道你的方法背后的想法。嗯。。。这有什么意义?为了正确获取所有数据,您无论如何都需要一个2D数组。您只需切换维度的顺序,但无法使用多维数组。(1)它是一个关联数组,因此您需要在某个位置至少键入一次每个列名,以便访问数据。(2) 根据您需要如何处理数据,重新安排数据可能是浪费时间。如果您将行放入
$data
中,您总是可以执行类似于
$data[0]['column_name']的操作来访问第一行中的
column_name',等等@Abs关键是您有行和列(因此有一个表):如何将它们压缩到一个简单的简单列表中?如果这样做,@Abs,然后您将只拥有查询中最后一行的数据。应该是
而($row=sqlsrv_fetch_数组($queryResult,sqlsrv_fetch_NUMERIC)){
它应该像
而($row=sqlsrv_fetch_数组($queryResult,sqlsrv_fetch_ASSOC)){
$serverName = "server.example.com"; // remember to append instance if applicable
$connectionInfo = array( "Database"=>"dbname", "UID"=>"username", "PWD"=>"password" );
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}