首页 > 解决方案 > 需要使用 PHP $_GET 使我的 json 结果看起来像这样

问题描述

对于大学作业,我需要能够读取和创建数据到 mysql 数据库。问题是当我将 $_GET 数据编码为 json 时,但问题是 json 的布局符合我的预期或需要。我想知道是否有人能弄清楚我的数据库表的设置方式是否有问题,或者我的 PHP 代码是否有问题。我正在使用邮递员插入 URL,然后将正文更改为 json。

这也是我需要的样子:

{
      "oid": "AB123456X",
      "comments": [
          {
                "name": "Mary",
                "comment": "This is a comment"
          },
          {
                "name": "Anonymous",
                "comment": "Another comment"
          }
          ]
}

这是我 $_GET 时的当前样子:

{
    "oid": "ABC123",
    "0": {
        "name": "Lucas",
        "comment": "Hello"
    },
    "1": {
        "name": "Kain",
        "comment": "Hello"
    },
    "2": {
        "name": "Harry",
        "comment": "Hello"
    },
    "3": {
        "name": "Will",
        "comment": "Hello"
    },
    "4": {
        "name": "Ana",
        "comment": "Hello"
    },
    "5": {
        "name": "Elanor",
        "comment": "Hello"
    },
    "6": {
        "name": "Amy",
        "comment": "Hello"
    },
    "7": {
        "name": "Will",
        "comment": "Hello"
    }
}

这是我当前用于获取数据然后显示它的 PHP 代码:

$result = $conn->query("SELECT name, comment 
                        FROM objects WHERE oid='$oid'");

while($row = $result->fetch_assoc()) {
   $json_array[] = $row;
}

echo json_encode($json_array, true);

这是我数据库中的表:

表格布局我有一个对象 id 列、一个名称列和一个注释列

任何帮助将不胜感激!

标签: phpmysqljson

解决方案


首先,创建一个数组来存储数据。这个数组需要 2 个键,oid并且comments. 为键分配 的oid$oid。键应包含一个空comments数组。

在您的循环中,只需将$row变量添加到comments键数组中。

$result = $conn->query("SELECT name, comment 
                        FROM objects WHERE oid='$oid'");

$json_array = [
    'oid' => $oid,
    'comments' => []
];

while($row = $result->fetch_assoc()) {
   $json_array['comments'][] = $row;
}

echo json_encode($json_array, true);

推荐阅读