PHP代码以下列格式获取json输出

时间:2013-02-21 02:26:53

标签: php android mysql json

您好我已经编写了一个Android应用程序,它与php交互以从数据库中获取数据。

我需要json以这种格式返回数据。

[
    {
        "outlet_id"    :"1",
        "outlet_desc"  :"BigBazaar",
        "outlet_loc"   :"Jayanagar4thBlock",
        "outlet_image" :"http%3A%2F%2Flocalhost%2FFlutura%2FPHP%2FAssets%2Fimages%2FBigBazaar.png",
        "recommended_products": [
                                    {
                                        "item_id":"3",
                                        "item_desc":"Dettol",
                                        "item_image":"http%3A%2F%2Flocalhost%2FFlutura%2FPHP%2FAssets%2Fimages%2FDettol.png"
                                    }
                                ]
    },
    {
        "outlet_id":"2",
        "outlet_desc":"FoodWorld",
        "outlet_loc":"Basavanagudi",
        "outlet_image":"http%3A%2F%2Flocalhost%2FFlutura%2FPHP%2FAssets%2Fimages%2FFoodWorld.png","
        recommended_products":[
                                {
                                    "item_id":"3",
                                    "item_desc":"Dettol",
                                    "item_image":"http%3A%2F%2Flocalhost%2FFlutura%2FPHP%2FAssets%2Fimages%2FDettol.png"
                                },
                                {
                                    "item_id":"3",
                                    "item_desc":"Colgate",
                                    "item_image":"http%3A%2F%2Flocalhost%2FFlutura%2FPHP%2FAssets%2Fimages%2FColgate.png"
                                }
                              ]
    },
    {
        "outlet_id":"5",
        "outlet_desc":"Total",
        "outlet_loc":"MurgeshPalaya",
        "outlet_image":"http%3A%2F%2Flocalhost%2FFlutura%2FPHP%2FAssets%2Fimages%2FTotal.png",
        "recommended_products":[
                                {
                                    "item_id":"3",
                                    "item_desc":"Dettol",
                                    "item_image":"http%3A%2F%2Flocalhost%2FFlutura%2FPHP%2FAssets%2Fimages%2FDettol.png"


                                },
                                {
                                    "item_id":"3",
                                    "item_desc":"Colgate",
                                    "item_image":"http%3A%2F%2Flocalhost%2FFlutura%2FPHP%2FAssets%2Fimages%2FColgate.png"

                                }
                               ]
     }
]

但是现在它正在以下列格式给出。

[
    [
        {
            "outlet_id": "1",
            "outlet_name": "Big Bazaar",
            "lat": "12.9285690",
            "lng": "77.5831100",
            "outlet_image": "images/BigBazaar.png",
            "outlet_location": "Jayanagar 4th Block"
        }
    ],
    [
        {
            "outlet_id": "2",
            "outlet_name": "Food World",
            "lat": "12.9392350",
            "lng": "77.5780680",
            "outlet_image": "images/FoodWorld.png",
            "outlet_location": "Basavanagudi"
        }
    ],
    [
        {
            "outlet_id": "5",
            "outlet_name": "Total",
            "lat": "12.9589340",
            "lng": "77.6571610",
            "outlet_image": "images/Total.png",
            "outlet_location": "Murugeshpalya"
        }
    ],
    [
        {
            "outlet_id": "6",
            "outlet_name": "Big Bazaar",
            "lat": "12.9324963",
            "lng": "77.6228463",
            "outlet_image": "images/BigBazaar.png",
            "outlet_location": "Koramangala"
        }
    ],
    [
        {
            "outlet_id": "7",
            "outlet_name": "Food World",
            "lat": "12.9785055",
            "lng": "77.6379353",
            "outlet_image": "images/FoodWorld.png",
            "outlet_location": "Indira Nagar"
        }
    ]
]

这是我的PHP代码。

<?php
error_reporting(0);

//$url = $_GET['url'];
//$mR = $_GET['mRequest'];
//$mOid = $_GET['mOutletId'];
//$mloc = $_GET['mLocation'];
//connect to the db
$user = "root";
$pswd = "";
$db = "recommendations_db";
$host = "localhost";
$conn = mysql_connect($host, $user, $pswd);
mysql_select_db($db);
//if($mR == 'outlets' && $mloc = 'all'){
$query = "SELECT * FROM outlets";
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error());

while($row = mysql_fetch_assoc($result))
{
  $output[] = array($row); 
}
print( json_encode($output) );
?>

我如何修改上面的PHP代码以第一种格式返回。请帮助,因为我在php中不太好。

表格结构。

奥特莱斯表。

它包含以下字段。

outlet_id outlet_name lat lng outlet_image outlet_location

建议表。

它包含以下字段。

item_id outlet_id

项目表。

它包含以下字段。

item_id item_name item_image item_price category_id

2 个答案:

答案 0 :(得分:1)

好的,这是缺少的子阵列。您希望从多维关联数组中创建JSON字符串,而不是对象。

有更快的方法可以选择这些行,但这很容易理解。

$query = "SELECT * FROM outlets";
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error());

$output=array(); # don't leave it undefined
while($row = mysql_fetch_assoc($result))
{
    # guessing this query
    $query2 = "SELECT * FROM recommended_products WHERE outlet_id=".$result['outlet_id'];

    # now we create the sub array recommended_products
    $row['recommended_products']=array();
    $result2 = mysql_query($query2) or die("Unable to verify user because : " . mysql_error());
    while($row2 = mysql_fetch_assoc($result2)){
        $row['recommended_products'][]=$row2;
    }

    # then add the modified row to the output
    $output[] = $row; 
}
print( json_encode($output) );

此外,mysql_已折旧。可能没有真正的急需,但至少可以考虑转换为mysqli或PDO。

答案 1 :(得分:0)

$output[] = array($row);更改为$output[] = $row;

相关问题