【问题标题】:PHP MySQL Exporting Select From two Table To One JSON FilePHP MySQL导出从两个表中选择一个JSON文件
【发布时间】:2017-03-28 15:44:00
【问题描述】:

请告诉我如何对包含两个表 clientappointment 的数据库运行查询以输出 JSON 格式

{
    "id": "1",
    "app1": null,
    "app2": null,
    "app3":[
            "cname": "John",
            "clastname": "Doe",
            "cemail": "john@doe.com",
            "cphone": "604",
    ],
    "app4":[
            "cname": "Mark",
            "clastname": "Martini",
            "cemail": "mark@martini.com",
            "cphone": "778",
    ]
}

如您所见,当appx 字段为空时,我需要获取null 并加载client 表数据,其中appx = cilentid

这是我的桌子

CREATE TABLE Client (
id INT(6),
cname VARCHAR(30) NOT NULL,
clastname VARCHAR(30) NOT NULL,
cemail VARCHAR(50),
cphone VARCHAR(50)
);
INSERT INTO Client 
    (`id`, `cname`, `clastname`, `cemail`, `cphone`) 
VALUES 
   (25, 'John', 'Doe', 'john@doe.com', '604'),
   (60 ,'Mark', 'Martini', 'mark@martini.com', '778')
 ;


 CREATE TABLE appointments (
id INT(6),
app1 INT(6)  DEFAULT NULL,
app2 INT(6)  DEFAULT NULL,
app3 INT(6) DEFAULT NULL,
app4 INT(6) DEFAULT NULL
);

INSERT INTO appointments 
    (`id`, `app1`, `app2`, `app3`, `app4`) 
VALUES 
   (1,null,null,null,60),
   (2,25,null,null,null)
 ;

【问题讨论】:

  • 您是否有一个可以为您提供所需结果的有效 MySQL 查询?您的约会表的设计方式是否有原因?
  • 感谢您的回复,但我需要这样设计。我的意思是appointment app1 实际上是9-10 而app2 是10-11 等等。我找不到更好的方法来处理这个问题。
  • 如果创建约会类型表(appointment_id, start_time, end_time),将当前约会表更改为关联表(appointment_id, client_id)。这样你就可以有任何没有。约会而不是当前的限制 4。在当前结构下,如果您需要添加其他约会类型,则需要在约会表中添加另一列,不推荐。向表中添加行然后向其添加列更容易。
  • 我一天要预约 10 次,所以我觉得最好把预约放在一张桌子上
  • 您仍然可以使用我建议的架构来做到这一点。如果你改变没有。从 10 到 15 的约会,那么你需要添加更多的列,其中大部分都是 NULL。

标签: php mysql json mysqli


【解决方案1】:

您始终可以SELECT 那些约会,遍历结果并将它们放入数组中,循环这些数组并从下一张表中获取您需要的任何内容。

$counter = 0;
$my_array=[];
$query = mysqli_query('SELECT * FROM appoints');
while ($result = mysqli_fetch_assoc($query)) {
    foreach ($result as $key => $value) {
        $my_array[$counter][$key] = ((int) $value > 0 ? (mysqli_fetch_assoc(mysqli_query('SELECT * FROM table WHERE id =' . (int) $usr))) : 'null');
    }
    $counter++;
}
var_export(json_encode($my_array));

最后你可以json_encode整个数组。

我宁愿重新设计整个事情,但这会给你一个关于如何处理这个特定问题的好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    相关资源
    最近更新 更多