Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中从mysql数据库创建JSON API服务_Php_Mysql_Json_Api - Fatal编程技术网

如何在php中从mysql数据库创建JSON API服务

如何在php中从mysql数据库创建JSON API服务,php,mysql,json,api,Php,Mysql,Json,Api,我有以下mysql数据库表 id | majorFoodName | cropName | foodType | foodName | quantity | form 1 | Recipe1 | Rice | Breakfast | Foodname1 | 500+60 | 2000 4 | Recipe2 | Rice | Breakfast | Foodname2 | 500 | 1000 6 | Recipe1

我有以下mysql数据库表

id | majorFoodName | cropName | foodType  | foodName  | quantity | form 
1  | Recipe1       | Rice     | Breakfast | Foodname1 | 500+60   | 2000 
4  | Recipe2       | Rice     | Breakfast | Foodname2 | 500      | 1000
6  | Recipe1       | Wheat    | Breakfast | Foodname2 | 518      | 1000 
我已经编写了以下php代码来提供JSON API输出

$sql = "SELECT * FROM food WHERE cropName = 'Rice' AND foodName = 
'Foodname1' ";
$result = mysqli_query($connect, $sql);
$num_rows = mysqli_num_rows($result);
if ($num_rows > 0) {
    $jsonData = array();
    while ($array = mysqli_fetch_row($result)) {
    $jsonData[] = $array;
  }
}
class Emp {
  public $majorFoods = "";    
   }
   $e = new Emp();
   $e->majorFoods = $jsonData;
   header('Content-type: application/json');
   echo json_encode($e);
我得到以下JSON输出

{
    "majorFoods": [
        [
        "1",
        "Recipe1",
        "Rice",
        "Breakfast",
        "Foodname1",
        "500+60",
        "2000"
    ]
  ]
}
我需要为所有cropName和所有foodName提供以下API JSON格式

{
  "Rice": [
               {
                 "foodName1": {
                        "majorFoodName": "Receipe1",
                        "quantity": "500+60",
                        "form": "2000" }
                 "foodName2": {
                        "majorFoodName": "Receipe2",
                        "quantity": "500",
                        "form": "1000" } 
                 ]
  "Wheat": [
               {
                 "foodName2": {
                        "majorFoodName": "Receipe1",
                        "quantity": "518",
                        "form": "1000" }
                 ]
}

请帮助改进php代码以获得所需的API JSON响应。

在构建数据数组时,使用裁剪类型作为主索引,并创建需要存储的额外数据的子数组

 while ($array = mysqli_fetch_assoc($result)) {
    $cropData = array ( $array['foodName'] => 
                array( 'majorFoodName' => $array['majorFoodName'],
                       'quantity' => $array['quantity'],
                       'form' => $array['form'] ));
    $jsonData[$array['cropName']][] = $cropData;
 }
请注意,我使用了
mysqli\u fetch\u assoc
,以便可以使用列名引用结果字段

线路

$jsonData[$array['cropName']][] = $cropData;
将特定作物名称的所有数据累加在一起,将新数据添加到数组的末尾(使用
[]