使用json fromat-PHP-mySQL从数据库中获取所有饮料及其成分
我用mySQL创建了一个简单的数据库:使用json fromat-PHP-mySQL从数据库中获取所有饮料及其成分,php,mysql,sql,json,Php,Mysql,Sql,Json,我用mySQL创建了一个简单的数据库: 表-饮料:id,姓名 表-成分:id、名称 表-饮料配料:饮料id,配料id 我想进行一个查询并获得类似以下格式的json: [{ "id": "000a1", "name": "Mojito", "ingredients": [{ "id": "000i1", "name": "Lime" }, { "id": "000i2", "name": "Bacardi" }] }, {
[{
"id": "000a1",
"name": "Mojito",
"ingredients": [{
"id": "000i1",
"name": "Lime"
}, {
"id": "000i2",
"name": "Bacardi"
}]
}, {
"id": "000d2",
"name": "Cuba Libre",
"ingredients": [{
"id": "000i3",
"name": "Rum"
}, {
"id": "000i4",
"name": "Cola"
}]
}]
我怎样才能做到这一点?我是否应该先请求获取所有饮料,然后遍历所有饮料,再请求内部获取其成分?我还需要相应的PHP对象来处理数据,然后打印JSON,还是不重要?首先获取所需的数据:
$drinks = array();
$i = 0;
$sql = "SELECT id,name FROM drinks";
//conn is your database connect variable
$result = $conn->query($sql);
foreach($result as $v=>$row){
$drinks[$i]['name'] = $row["name"];
$drinks[$i]['id'] = $row["id"];
$drinks[$i]['ingredients'] = array();
$j = 0;
$sql2 = "SELECT ingredients_id, name FROM drink_Ingredients INNER JOIN ingredients on drink_Ingredients.ingredients_id=ingredients.id";
$result2 = $conn->query($sql2);
foreach($result2 as $v2=>$row2){
$drinks[$i]['ingredients'][$j]['id'] = $row2["ingredients_id"];
$drinks[$i]['ingredients'][$j]['name'] = $row2["name"];
$j++;
}
$i++
}
获得饮料数组后,需要生成json:
$json = json_encode($drinks);
仅此而已:)“我是否应该先请求获取所有饮料,然后遍历所有饮料,并在其中发出另一个请求以获取其成分?我是否还需要相应的PHP对象来处理数据,然后打印JSON”。。。是和否。你可以编写一个连接查询来实现这个结果集。它工作得很好!你节省了我很多时间。谢谢你,罗伯特!