我有以下 php 代码,但它只存储查询返回的最后一行数据。如何将所有数据存储在 json 数组中,以便我可以通过 android 访问它并填充 ListView ?
<?php
header('Content-Type: application/json ');
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'pass';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT * FROM tb_name';
mysql_select_db('db_name');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($rows=mysql_fetch_assoc($retval)){
$json['colA'] = $rows['colA'];
$json['colB'] = $rows['colB'];
}
echo json_encode($json);
mysql_close($conn);
?>
以下代码仅生成以下 json 数组,其中数据是最后一行:
{
"colA": "contents of A",
"colB": "contents of B"
}
如何存储它返回的所有行,但以某种方式使键分开,如下所示:
{
{
"colA": "contents of A",
"colB": "contents of B"
},
{
"colA": "contents of A",
"colB": "contents of B"
},
{
"colA": "contents of A",
"colB": "contents of B"
}
}
我知道语法可能不适合 json 文件,但本质上这就是我想要完成的,我错过了什么?
最佳答案
您在 while 循环中覆盖数据。你可以这样做:
while($rows=mysql_fetch_assoc($retval)){
$row['colA'] = $rows['colA'];
$row['colB'] = $rows['colB'];
$json[] = $row;
}
关于php - 如何使用 php 为 sql 服务器设置 2d Json 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670121/