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,那么您需要添加更多的列,其中大多数列无论如何都是空的。