我有以下php代码,但是它只存储查询返回的最后一行数据。如何将所有数据存储在json数组中,以便可以通过android访问这些数据并填充列表视图?
<?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文件的语法可能不正确,但这基本上就是我想要完成的,我错过了什么?
发布于 2016-06-07 11:52:01
在while循环中覆盖您的数据。您可以这样做:
while($rows=mysql_fetch_assoc($retval)){
$row['colA'] = $rows['colA'];
$row['colB'] = $rows['colB'];
$json[] = $row;
}发布于 2016-06-07 12:44:52
而不是
while($rows=mysql_fetch_assoc($retval)){
$json['colA'] = $rows['colA'];
$json['colB'] = $rows['colB'];试试这个:
$jsonData = array();
while ($array = mysql_fetch_row($retval)) {
$jsonData[] = $array;
}
echo json_encode($jsonData);或
$arr = array();
while ($row = mysql_fetch_assoc($retval)) {
$arr2 = array();
foreach ($row as $val)
$arr2[] = $val;
$arr[] = $arr2;
}
echo json_encode($arr);发布于 2016-06-07 13:04:11
试试这个
$data=array();
while($rows=mysql_fetch_assoc($retval)){
$json['colA'] = $rows['colA'];
$json['colB'] = $rows['colB'];
array_push($data,$json);
}
return json_encode($data);或
$data=array(mysql_fetch_assoc($retval));
// $data = [$rows=mysql_fetch_assoc($retval)];
return json_encode($data)https://stackoverflow.com/questions/37670121
复制相似问题