PHP MySQL将选择从两个表导出到一个JSON文件

PHP MySQL将选择从两个表导出到一个JSON文件,php,mysql,json,mysqli,Php,Mysql,Json,Mysqli,您能告诉我如何对一个数据库运行一个查询,该数据库有两个表client和appointment,以输出JSON吗 { "id": "1", "app1": null, "app2": null, "app3":[ "cname": "John", "clastname": "Doe", "cemail": "john@doe.com", "cphone": "604",

您能告诉我如何对一个数据库运行一个查询,该数据库有两个表
client
appointment
,以输出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",
    ]
}
如您所见,当
app
x字段为空时,我需要获取
null
,并在
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)
 ;

您始终可以
选择这些约会,循环浏览结果并将其放入数组,循环这些数组并从下一个表中获取所需内容

$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\u编码


我宁愿重新设计整个问题,但这会让您对如何处理这个特定问题有一个好主意。

您是否有一个可以提供所需结果的MySQL查询?您的预约表是这样设计的,有什么原因吗?谢谢您的回复,但我需要这样设计。我的意思是,app1实际上是
9-10
,app2是
10-11
,依此类推。我找不到更好的方法来处理此问题。如果创建约会类型表
(约会id、开始时间、结束时间)
,将当前约会表更改为关联表
(约会id、客户id)
。这样你就可以有任意数量的约会,而不是目前的4次。在当前结构中,如果需要添加其他约会类型,则需要向约会表中添加不推荐的另一列。将行添加到表中,然后再将列添加到表中更容易。我需要在一天内获得10个约会,因此我认为最好将约会保留在一个表中。您仍然可以使用我建议的模式进行此操作。如果您将约会的数量从10更改为15,那么您需要添加更多的列,其中大多数列无论如何都是空的。