JSON对象中的两个MySQL查询

用户名

我正在尝试通过MySQL和PHP构建以下JSON。
每个章节都有一个ID,一个章节标题和一个主题列表。
每个主题都有一个ID和一个主题区域

{
"Chapters": [
    {
        "id": "1",
        "chapterTitle": "Introduction",
        "Topics": [
            {
                "id": "1",
                "topicArea": "C++"
            },
            {
                "id": "2",
                "topicArea": "Java"
            }
        ]
    },
    {
        "id": "2",
        "chapterTitle": "Getting Started",
        "Topics": [
            {
                "id": "1",
                "topicArea": "Start Here"
            }
        ]
    }
 ]
}

但是,如果尝试以下PHP代码(1),则无法生成此输出。

//Get all chapters
$result = mysql_query("SELECT * FROM chapters");      

while ($row = mysql_fetch_array($result))
{
    $json[] = $row;
    $json2 = array();
    $chapterid = $row["id"];

    //Fetch all topics within the first book chapter
    $fetch = mysql_query("SELECT id,topicArea FROM topics where chapterid=$chapterid");
    while ($row2 = mysql_fetch_assoc($fetch))
    {
         $json2[] = array( 
            'id' => $row2["id"],
            'topicArea' => $row2["topicArea"]
           );
     }
     $json['Topics'] = $json2;          //I think the problem is here!
}
echo json_encode($json);
chx

请不要再使用这些mysql_*功能。双方mysqliPDO允许您使用准备好的语句。

话虽如此,您说的$json['Topics'] = $json2;就是问题所在:这必须是$json['Topics'][] = $json2;

最后,出于性能方面的原因(请参阅什么是SELECT N + 1?),您可能需要查看JOIN总而言之:

$dbh = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
$query = 'SELECT c.id AS chapter_id, c.chapterTitle, t.id as topic_id, t.topicArea FROM chapters c INNER JOIN topics t ON c.id = t.chapterid';
$json = array();
foreach ($dbh->query($query) as $row) {
  $json[$row['chapter_id']]['id'] = $row->chapter_id;
  $json[$row['chapter_id']]['chapter_title'] = $row->chapter_title;
  $json[$row['chapter_id']]['Topics'][] = array(
    'id' => $row->topic_id,
    'topicArea' => $row->topicArea,
  );
}
print json_encode(array_values($json));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL将两个查询合并到JSON对象中

来自分类Dev

两个表中的MySQL查询

来自分类Dev

结合两个json数组作为mysql中的键值并创建一个json对象

来自分类Dev

MySQL查询与两个

来自分类Dev

在PARSE中由两个用户对象查询

来自分类Dev

mongoDB查询比较对象中的两个键

来自分类Dev

在mysql中的单个查询中更新两个表

来自分类Dev

MySQL中两个表中的复杂查询

来自分类Dev

比较MySQL中两个查询的性能

来自分类Dev

在MySQL查询中获取两个匹配项?

来自分类常见问题

合并两个查询以在MySQL中获得单个结果

来自分类Dev

MySQL在单个查询中访问两个表

来自分类Dev

MySQL查询从两个表中获取值

来自分类Dev

合并两个查询以在MySQL中获得单个结果

来自分类Dev

在MYSQL中按条件顺序查询两个表

来自分类Dev

在MySQL查询中获取两个匹配项?

来自分类Dev

在MySQL中减去两个Select查询的结果

来自分类Dev

检查php mysql查询中的两个表值

来自分类Dev

更新查询两个不同表中的两个不同列-MySQL

来自分类Dev

如何从两个不同表的 JSON 数组中查询?

来自分类Dev

两个对象之间的子查询

来自分类Dev

在PostgreSQL中合并两个JSON对象

来自分类Dev

Concat Java中的两个json对象

来自分类Dev

根据javascript中的键值合并两个json对象

来自分类Dev

在AngularJs中链接两个JSON对象

来自分类Dev

在Node-Red中合并两个JSON对象

来自分类Dev

在Snowflake中连接两个JSON对象

来自分类Dev

在Python中合并两个JSON对象

来自分类Dev

在AngularJs中链接两个JSON对象