php - 如何从多个相似的行mysql结果创建复杂的结构化json

标签 php mysql json

一个节日有多个舞台。多个艺术家在一个舞台上表演。

这是我的 Mysql 结果:

mysqlresult

通过该 sql 请求,我想在 PHP 中创建一个具有以下结构的 json 对象:

{
    "name": "mainstage",
    "artists": [
        {
            "name": "Gregori Klosman"
        },
        {
            "name": "Tristan Garner"
        }, 
        {
            "name": "Glow In The Dark"
        }, 
        {
            "name": "Jaxx Da Fishworks"
        }]
}, 
{
    "name": "Dim Mak",
    "artists" : [
        {
            "name": "Albin Myers"
        }
     ]
}

我尝试使用以下脚本执行此操作,但结构略有不同,因为我有一个 ID 来标识阶段。

$stages = array();
while($result_stages = $query_stages -> fetch()) {
    $artist = array("name" => $result_stages["artist_name"]);
    array_push($stages[$result_stages["stage_id"]]["artists"], $artist);
}

echo json_encode($stages);

有什么想法吗?我可以使用多个 mysql 请求和 php 循环来实现,但我觉得这不是最正确的方法。感谢您的回答!

最佳答案

我已经尝试过这样...

$sql="select stage_name from [table_name] group by stage_name";
$result=mysql_query($sql);
$arr = array();
$i=0;
while($row=mysql_fetch_array($result))
{
    $arr[$i]['name']=$row[0];
    $sql2="select artist_name from [table_name] where stage_name='".$row[0]."'";
    $result2=mysql_query($sql2);
    $arr2=array();
    while($row2=mysql_fetch_array($result2))
    {
      array_push($arr2,$row2[0]);
    }
 $arr[$i]['artist'] = $arr2;
 $i++;
}
 echo json_encode($arr); 

关于php - 如何从多个相似的行mysql结果创建复杂的结构化json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17011009/

相关文章:

php - 如何为用户实现关注者,就像在推特中一样

php - Mysql insert 和 select id of inserted

mysql - LoopbackJS中如何选择外键引用的字段

java - 保持 onResponse 方法中获得的数据在整个类中可用

python - 如何执行 nvl() 以避免来自不存在的 json 元素的错误?

javascript - 如何使用重复键动态生成 JSON 对象?

PHP/MySQL 连接语句

PHP 在外部 html 文件中显示搜索结果文本文件

php - 以编程方式从 systemd 的日志中读取消息

mysql - 在多列中搜索的最佳方式