通过php从mysql结果创建json对象

Tak*_*shi 4 php json

可能重复:
JSON编码MySQL结果

我想用php创建一个像下面这样的json对象.它将返回一个字符串作为结果sql查询的响应.

{"Orders":[  
            {"DeliveryId":"DeliveryId","CustomerName":"CustomerName","PhoneNumber":"PhoneNumber","Address":"Address"},  
            {"DeliveryId":"DeliveryId","CustomerName":"CustomerName","PhoneNumber":"PhoneNumber","Address":"Address"}               
]
}
Run Code Online (Sandbox Code Playgroud)

我的代码

<?php
mysql_connect("mysql12.000webhost.com","a4602996_longvan","longvan2012");
mysql_select_db("a4602996_lv"); 
$id=$_POST[user];
$sql=mysql_query("select * from testlongvan where Status = 'PACKED'" ); 

$json = array();
if(mysql_num_rows($sql)){
while($row=mysql_fetch_row($sql)){
$json['Orders'][]=$row;
}
}

//while($row=mysql_fetch_assoc($sql))
//$output[]=$row;
print(json_encode($json)); 
mysql_close(); 
?>
Run Code Online (Sandbox Code Playgroud)

但是当使用我的代码时,结果不符合我的预期:

{"Orders":[["longvan","10/12/2012","Be34433jh","Long Van","115 Pham Viet Chanh,quan Binh Thanh","http://longvansolution.tk/image/ sample.jpg","PACKED","0909056788"],["takeshi","24/12/2012","BF6464633","Vn-zoom","16 nguyen cuu van,quan binh thanh","http ://longvansolution.tk/image/hoadon3.jpg","PACKED","098897657"]]}

你能帮助我吗?

Sta*_*ley 13

您必须为每一行创建一个数组以指定字段名称和值.

$json['Orders'][] = array('DeliveryId' => $row[0], 'CustomerName' => $row[1], ...);
Run Code Online (Sandbox Code Playgroud)

如果表列名正是您要在JSON中使用的名称,请使用mysqli_fetch_assoc()函数:

$rows = array();
while($r = mysqli_fetch_assoc($sql)) {
    $rows[] = $r;
}
$data = array('Orders' => $rows);
print json_encode($data);
Run Code Online (Sandbox Code Playgroud)

  • **不**,使用[mysql***i***_fetch_assoc()](http://php.net/manual/en/mysqli-result.fetch-assoc.php) (3认同)