PHP(或 jQuery,如果需要): Output related MySQL records from other tables as JSON?

标签 php mysql json

我有两个表:

表 1:

Make       Model 1 ID      Model 2 ID      Model 3 ID
----       ----------      ----------      ----------
Ford       1               4               7
Chevrolet  2               3               5
Dodge      6               8               9

表 2:

ID         Model            Engine
----       -----            ------
1          F-150            Triton V8
2          Silverado        Vortec V8
3          Corvette         LS9 V8
4          Fusion           Duratec I4
5          Camaro           LSA V8
6          Ram              Hemi V8
7          Mustang          Modular V8
8          Grand Caravan    Pentastar V6
9          Challenger       Hemi V8

我希望使用 PHP 将链接数据输出为 JSON(是你所说的吗?我对编程术语有点菜鸟。抱歉。)如果我的 JSON 语法错误,则类似):

 {
  [
   {
    "make": "Ford",  
    "models": 
     [ 
      { 
      "ID": "1",
      "info": 
         {
         "model": "F-150",
         "engine": "Triton V8", 
         }
      },
      { 
      "ID": "4",
      "info": 
         {
         "model": "Fusion",
         "engine": "Duratec I4", 
         }
      },
      { 
      "ID": "7",
      "info": 
         {
         "model": "Mustang",
         "engine": "Triton V8", 
         }
      },
     ] 
   },
   {
    "make": "Chevrolet",  
    "models": 
     [ 
      { 
      "ID": "2",
      "info": 
         {
         "model": "Silverado",
         "engine": "Vortec V8", 
         }
      },
      { 
      "ID": "3",
      "info": 
         {
         "model": "Corvette",
         "engine": "LS9 V8", 
         }
      },
      { 
      "ID": "5",
      "info": 
         {
         "model": "Camaro",
         "engine": "", 
         }
      },
     ] 
   },   {
    "make": "Dodge",  
    "models": 
     [ 
      { 
      "ID": "6",
      "info": 
         {
         "model": "Ram",
         "engine": "Hemi V8", 
         }
      },
      { 
      "ID": "8",
      "info": 
         {
         "model": "Grand Caravan",
         "engine": "Pentastar V6", 
         }
      },
      { 
      "ID": "9",
      "info": 
         {
         "model": "Challenger",
         "engine": "Hemi V8", 
         }
      },
     ] 
   }
  ]
}

问题是,如何使用 PHP 来做到这一点?感谢您花时间阅读这篇相当长的文章,并提前感谢您尝试提出解决方案。

如果您想建议使用 jQuery 的解决方案,也可以。

最佳答案

您的数据库错误。试试这个结构:

MakeID Make
------ ----
1      Ford
2      Chevrolet
3      Dodge

ModelID MakeID Model          Engine
------- ------ -------------- ------
1       1      F-150          Triton V8
2       2      Silverado      Vortec V8
3       2      Corvette       LS9 V8
4       1      Fusion         Duratec I4
5       2      Camaro         LSA V8
6       3      Ram            Hemi V8
7       1      Mustang        Modular V8
8       3      Grand Caravan  Pentastar V6
9       3      Challenger     Hemi V8

现在你可以做这样的事情:

$sql = mysql_query("select * from `table1` join `table2` using (`MakeID`)");
$out = Array();
while($car = mysql_fetch_assoc($sql)) {
    if( !isset($out[$car['MakeID']])) {
        $out[$car['MakeID']] = Array("make"=>$car['Make'],"models"=>Array());
    }
    $out[$car['MakeID']]['models'][] = Array(
        "ID"=>$car['ModelID'],
        "info":Array(
            "model"=>$car['Model'],
            "engine"=>$car['Engine']
        )
    );
}
$out = array_values($out);
echo json_encode($out);

关于PHP(或 jQuery,如果需要): Output related MySQL records from other tables as JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15012799/

相关文章:

python - 如何解析嵌套json对象的元素?

php - 为什么 PHP 的 urlencode 使用不同的 URL 编码?

php - 在 PHP 中生成唯一 ID

mysql - TRIM mysql 值在外部查询中不解释为字符串

mysql - SQLException : You can't specify target table 'p' for update in FROM clause

c# - json 文件反序列化为 poco 对象不起作用

python - 如何将新的 json 对象插入现有的 json 文件(在对象中间)

php - 如何在 PHP 中触发正则表达式拒绝服务?

php - 根据当前翻译的 Laravel 路由在 Blade 中添加 "active"类

mysql - [SQL]如何使用 LEFT JOIN 和 DELETE 删除连接表列上包含 NULL 值的所有行