【发布时间】:2020-03-05 10:04:54
【问题描述】:
在 PHP 中,我想将每一行加在一起。
这是我自己的数据库的总结示例:
c(CorporateID,CompanyName)
o(CorporateID,OutletID)
os(OutletID,StaffName)
数据:
c 表:
CorporateID CompanyName
----------- -----------
1 A&B Company
o 表格:
CorporateID OutletID
----------- --------
1 1
1 2
1 3
操作系统表:
OutletID StaffName
-------- ---------
1 Jeannie
1 Zoey
1 Jasmine
2 James
2 Catherine
3 Ada
PHP 的一部分
$conn = new mysqli(server, dbuser, dbpw, db);
$query = "
SELECT o.*, c.*, os.*
FROM Outlet o, Company c, OutletStaff os
WHERE c.CorporateID = o.CorporateID
AND o.OutletID = os.Outlet_ID";
$result = $conn->query($query);
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"CompanyName":"'. $rs["CompanyName"].' - Outlet'. $rs["OutletID"].'",';
$outp .= '"Worker":"'.$rs["StaffName"].'"}';
}
$outp .="]";
$conn->close();
echo($outp);
输出
[{"CompanyName":"A&B - Outlet1","Worker":"Jeannie"},
{"CompanyName":"A&B - Outlet1","Worker":"Zoey"},
{"CompanyName":"A&B - Outlet1","Worker":"Jasmine"},
{"CompanyName":"A&B - Outlet2","Worker":"James"},
{"CompanyName":"A&B - Outlet2","Worker":"Catherine"},
{"CompanyName":"A&B - Outlet3","Worker":"Ada"}]
如您所见,companyname 是重复的,这是由于该插座中的不同工人。
这是我的期望:
[{"CompanyName":"A&B - Outlet1","Worker":"Jeannie, Zoey, Jasmine"},
{"CompanyName":"A&B - Outlet2","Worker":"James, Catherine"},
{"CompanyName":"A&B - Outlet3","Worker":"Ada"}]
它可以做到吗?个人感觉和php的第13行有关系:
$outp .= '"Worker":"'.$rs["StaffName"].'"}';
也许我需要循环然后放入一个变量,然后放入这个输出?
我怎样才能实现它?
【问题讨论】:
-
正如我所说,我是 php 新手。我试过做,但我无法使用组 concat 找到我想要的输出
标签: php sql arrays database sorting