2016-11-14 72 views
-1

能否请你让我知道我可以对数据库运行一个查询两个表clientappointment到了把JSON像PHP MySQL的出口从两个表要一个JSON文件

{ 
    "id": "1", 
    "app1": null, 
    "app2": null, 
    "app3":[ 
      "cname": "John", 
      "clastname": "Doe", 
      "cemail": "[email protected]", 
      "cphone": "604", 
    ], 
    "app4":[ 
      "cname": "Mark", 
      "clastname": "Martini", 
      "cemail": "[email protected]", 
      "cphone": "778", 
    ] 
} 

,你可以看到我需要nullapp X字段为空,并与其中appx = cilentid

这里是我的表client表中的数据加载

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', '[email protected]', '604'), 
    (60 ,'Mark', 'Martini', '[email protected]', '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) 
; 

enter image description here

+1

你有工作的MySQL查询,会给你你需要的结果吗?是否有一个理由,你的预约表的设计是这样的? – Maximus2012

+0

感谢您的回复,但我需要以这种方式进行设计。我的意思是'约会'app1实际上是'9-10',app2是'10-11'等等。我找不到处理这个问题的更好方法。 – Behseini

+0

如果您创建约会类型表'(appointment_id,start_time,end_time)',将当前约会表更改为关联表'(appointment_id,client_id)'。这样你可以有任何没有。的约会,而不是当前的限制4.使用当前结构,如果您需要添加其他约会类型,则需要向约会表添加另一列,这是不推荐的。将行添加到表中然后向其添加列会更容易。 – Maximus2012

回答

-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整个阵列。

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