PHP for循环sql结果

时间:2016-01-06 13:23:03

标签: php mysql

我目前正在为一所学校项目工作。我有2个SQL表和一个表来连接这两个。表格包含人,表2包含卡。 connect表包含一个主键和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个小时,我无法完成它。

2 个答案:

答案 0 :(得分:1)

我假设您的查询返回类似于:

|   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

答案 1 :(得分:0)

$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'];