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

标签 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`;

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

最佳答案

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

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);

关于php - 如何显示mysql中每个唯一项目的信息,合并每个项目的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55732119/

相关文章:

php - 为什么我在第 2 行定义它时它说 $con 是一个 undefined variable ?

php - 循环不写正确的值

php - 通过 PHP 执行的 REGEXP 的奇怪 MySQL 结果集

php - php中Mysql内连接搜索

php - MySQL SELECT 查询结果转 JSON

php - 时间戳和表单输入日期/时间

javascript - mysqli 直接运行时有效,但通过 js-ajax 运行时无效

php - 检查产品变体是否在 Woocommerce 的购物车中

java - PHP:将值添加到 HTTP header 中的现有键中

mysql - 同一个表 SQL Server 上的多个联接