繁体   English   中英

PHP for SQL结果循环

[英]PHP for loop on sql results

我目前正在为一个学校项目工作。 我有2个SQL表和一个连接两个表。 表1包含人员,表2包含卡。 连接表包含一个主键和2个值。 价值是一个人的主键,另一个是汽车的主键。 这张桌子将人与汽车连接起来。 这样,我可以在PHP中创建一个表格,在其中可以看到谁拥有汽车。

这可以正常工作,但是每个拥有多辆汽车的人都会显示多次。 因此,例如:第一个人同时拥有第一和第二辆汽车。 现在,该表显示了2个人的名字,并在其名字后面显示了汽车。 我希望只显示一张表,上面有这些人的名字,然后在后面有一辆或多辆汽车。

以下是我现在设置方式的示例:

$query = "SELECT firstname, lastname, car FROM people, cars, connecttabel         
WHERE connecttabel.personnumber = people.personnumer
AND connecttabel.carnumber = cars.carnumber";
$result = mysqli_query($database, $query)
or die ("error");
echo "<table>";
while($record=mysqli_fetch_array($result))
{$firstname = $record['firstname'];

等等。 使用变量,我填写表格。

有谁知道如何在这里帮助我? 我认为应该使用for循环来完成,但是最近3个小时我一直在尝试,但无法完成。

我假设您的查询返回的内容如下:

|   first_name   |   last_name   |   car   |
+------------------------------------------+
| John           | Doe           | Mustang |
| John           | Doe           | Camaro  |
| John           | Doe           | SL55    |
| Jane           | Deo           | Prius   |
| Jane           | Deo           | Renegade|

如果您只想要每个人拥有的汽车数量,则可以尝试:

SELECT firstname, lastname, COUNT(car) FROM people, cars, connecttabel         
WHERE connecttabel.personnumber = people.personnumer
AND connecttabel.carnumber = cars.carnumber GROUP BY firstname, lastname;

这将为您提供:

|   first_name   |   last_name   |COUNT(car)|
+-------------------------------------------+
| John           | Doe           | 3        |
| Jane           | Deo           | 2        |

但是如果您想要类似...

|   first_name   |   last_name   |       car_list        |
---------------------------------------------------------+
| John           | Doe           | Mustang, Camaro, SL55 |
| Jane           | Deo           | Renegade, Prius       |

您可以使用Group Concat

SELECT firstname, lastname, GROUP_CONCAT(DISTINCT car ORDER BY car) AS car_list FROM people, cars, connecttabel         
WHERE connecttabel.personnumber = people.personnumer
AND connecttabel.carnumber = cars.carnumber GROUP BY firstname, lastname
$query = "SELECT firstname, lastname, car FROM people, cars, connecttabel         
WHERE connecttabel.personnumber = people.personnumer
AND connecttabel.carnumber = cars.carnumber Group by people.id";
$result = mysqli_query($database, $query)
or die ("error");
echo "<table>";
while($record=mysqli_fetch_array($result))
{$firstname = $record['firstname'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM