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