我有一些我无法弄清楚的PHP问题!
我遍历数据库中的行:
$data = array();
while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)){
$data[] = $row;
}
$data
现在在数组中包含一个数组,我怎么能拥有它才能使它仍然只是一个数组呢?
全部谢谢
答案 0 :(得分:4)
那是因为每个$row
都是一个关联数组。如果您只想将数据作为一列中的值数组,请指定该列:
$data = array();
while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)){
$data[] = $row['column_name_you_want'];
}
答案 1 :(得分:3)
这是一个更明显的方式:
$data = array();
while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_NUMERIC){
$data = array_merge( $data, array_values($row) );
}
答案 2 :(得分:2)
这应该可以将所有列和行返回的所有值作为单维数组
$data = array();
while($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC){
$values = array_values($row);
foreach($values as $value)
{
$data[] = $value;
}
}
答案 3 :(得分: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));
}