gpt4 book ai didi

PHP 连接 MySQL 表,输出格式化 JSON

转载 作者:行者123 更新时间:2023-11-29 12:26:35 29 4
gpt4 key购买 nike

我在尝试在 PHP 脚本中连接两个 MySQL 表,然后将其格式化为 JSON 以便在我的私有(private)应用程序中由 javascript 解释时遇到了困难。该应用程序仅供我们美术团队对我们公司生产的各种产品进行编辑。

此过程的目的是创建需要注意的产品列表,以及每个产品中的“任务” list ,可以在完成后进行检查(因此有“检查”字段)。

表格的格式如下:

产品表:

+------+-----------+-----------+---------+
| id | task_id | product | notes |
+------+-----------+-----------+---------+
| 10 | 1 | Item 1 | |
+------+-----------+-----------+---------+
| 11 | 2 | Item 2 | |
+------+-----------+-----------+---------+

任务表:

+------+-----------+---------------+---------+
| id | task_id | task | check |
+------+-----------+---------------+---------+
| 1 | 1 | Fix Box Art | 0 |
+------+-----------+---------------+---------+
| 2 | 1 | Add Copyright | 1 |
+------+-----------+---------------+---------+
| 3 | 2 | Update Text | 0 |
+------+-----------+---------------+---------+

我已经能够使用以下代码在 PHP 中连接表:

SELECT 
products.*,
GROUP_CONCAT(tasks.task, tasks.check) AS steps
FROM products
LEFT JOIN task_steps ON products.task_id = task.task_id

在 while 循环内,我正在构建一个像这样的数组:

$output[] = 
array (
"id" => $row['id'],
"task_id" => $row['task_id'],
"product" => $row['product'],
"notes" => $row['notes'],
"tasks" => $row['steps']
);

然后我将数组输出为 JSON:

echo json_encode($output);

这就是我被困住的地方。我已经能够输出一些 JSON,但与我正在寻找的内容相差甚远。我正在寻找的格式看起来像这样:

[  
{
"id":"10",
"task_id":"1",
"product":"Item 1",
"notes":"",
"tasks":[
{
"task":"Fix Box Art",
"check":"0"
},
{
"task":"Add Copyright",
"check":"1"
}
]
}
]

任何人都可以插入我朝着正确的方向插入我应该如何将表数据格式化为提到的 JSON 格式,或者如果我一起朝着错误的方向前进,也许可以建议一种替代方法?

最佳答案

将循环中的每个任务推回:

while(...fetching) {

if (!isset($output[$row['id']])) {
$output[$row['id']] = array (
"id" => $row['id'],
"task_id" => $row['task_id'],
"product" => $row['product'],
"notes" => $row['notes'],
"tasks" => array()
);
}

$output[$row['id']]['tasks'][] = array(
'task' => $row['task'],
'check' => $row['check']
);
}

这样,任务实际上就是一个数组

您还需要检索其他表列

SELECT 
products.*,
tasks.* //<<--

关于PHP 连接 MySQL 表,输出格式化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28220417/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com