2010-07-01 76 views
2

我有nooby PHP问题,我不明白!循环访问数据库行并创建单个数组

通过从我的数据库行我循环:

$data = array(); 

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

     $data[] = $row; 
    } 

$data现在包含一个阵列内的阵列我怎么能有它,这样它仍然只是一个单一的阵列?

感谢所有

+0

一个什么数组?你可能想要通过数据库ID索引数据[],对吧? – galambalazs 2010-07-01 13:30:50

+0

@galambalazs - 它是我数据库中的一行数组。我只想把它作为一个单一的数组,以便我可以更容易地处理它。没有真正的需要,但我想知道如何做到这一点,以防我需要。 – Abs 2010-07-01 13:35:02

回答

2

这更明显的方式:

$data = array(); 

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

这是因为每个$row是一个关联数组。如果你只是希望数据是值从一列的数组,指定列:

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

太棒了,谢谢。打印所有列名的操作非常繁琐,但我明白了你的方法。 – Abs 2010-07-01 13:36:15

+4

嗯......这是什么意思?为了正确获取所有数据,无论如何您都需要2D数组。您只需切换维度的顺序,但无法拥有多维数组。 – quantumSoup 2010-07-01 13:39:42

+0

(1)这是一个关联数组,因此您需要至少在某处输入每个列名以访问数据。 (2)根据你需要处理的数据,重新安排它可能是浪费时间。如果你把行放到'$ data'中,你总是可以像这样做'$ data [0] ['column_name']来访问第一行的'column_name'等。 – takteek 2010-07-01 13:48:07

2

这应该让你的所有值从所有列和行返回一个一维数组

$data = array(); 

while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC){ 
    $values = array_values($row); 
    foreach($values as $value) 
    { 
     $data[] = $value; 
    } 
} 
0

我看到这是一个老问题,但我也在寻找一个解决方案。想出这对我的作品如下:

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):

$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)); 
}