我试图遍历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`;
我需要为每种唯一的颜色运行一个函数。
答案 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);