如何在mysql中显示每个唯一项目的信息,合并每个项目的信息

时间:2019-04-17 16:21:50

标签: php mysql mysqli foreach

我试图遍历mysql数据库列中的每个唯一项

例如,数据库类似于下面,我想显示每种唯一颜色的“型号”和“年份”。

数据库示例。 (表名为“汽车”)

----------------------
Color | Model  | Year 
----------------------
Red   | Chevy  | 2014
----------------------
Blue  | Ford   | 2012
----------------------
Red   | Ford   | 2013 
----------------------
Red   | Ford   | 2014 
----------------------
Blue  | Ford   | 2012
----------------------
Blue  | Chevy  | 2012
----------------------
Red   | Ford   | 2011 
----------------------
Blue  | Chevy  | 2012
----------------------

我正在寻找类似的输出:     红色 雪佛兰1 福特4

蓝色 福特2 雪佛兰3

以下代码将显示每种颜色。

<?php
$con = mysqli_connect($servername, $username, $password, $dbname);
if (!$con) {
    die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,$dbname);

$sql="SELECT * FROM `cars`";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)) {
echo "<br />" . $row['Color'] . "<br />";
}
mysqli_close($con);
?>

下面将计算不同的颜色。

SELECT COUNT(DISTINCT `Color`) from `cars`;

我需要为每种唯一的颜色运行一个函数。

1 个答案:

答案 0 :(得分:1)

您可以在获取结果时按颜色和模型分组。

while ($row = mysqli_fetch_array($result)) {
    $colors[$row['Color']][$row['Model']][] = $row['Year'];
}

然后输出带有每种颜色/型号的计数的那些组。

foreach ($colors as $color => $models) {
    echo "<h2>$color</h2>";
    foreach ($models as $model => $years) {
        echo "<p>$model: " . count($years) . "</p>";
    }
}

例如,我添加了一些基本标记,但是您可能已经知道如何格式化结果。

这样的分组还意味着您无需运行第二个查询来计算不同的颜色。

$distinctColorCount = count($colors);