You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从MySQL展示有可用车辆的品牌并显示对应车辆数量

解决方案:仅显示存在对应车辆的汽车品牌及总数

核心逻辑

通过MySQL的GROUP BY分组统计,自动过滤无对应车辆的品牌,同时计算每个品牌的车辆总数。


假设你的表结构(不符可自行调整)

假设你有一张cars表,结构如下:

CREATE TABLE cars (
    id INT AUTO_INCREMENT PRIMARY KEY,
    brand VARCHAR(50) NOT NULL, -- 品牌名称,比如"BMW"
    model VARCHAR(50) NOT NULL, -- 车型
    -- 其他字段如价格、年份等
);

修正后的MySQL查询语句

SELECT brand, COUNT(*) AS total_cars
FROM cars
GROUP BY brand;
  • GROUP BY brand:将同一品牌的车辆归为一组
  • COUNT(*):统计每组的车辆数量,自动排除无车辆的品牌(无车辆的品牌不会被分组)

如果你的品牌存在单独的brands表(更规范的设计),比如:

CREATE TABLE brands (
    id INT AUTO_INCREMENT PRIMARY KEY,
    brand_name VARCHAR(50) NOT NULL
);

CREATE TABLE cars (
    id INT AUTO_INCREMENT PRIMARY KEY,
    brand_id INT NOT NULL,
    model VARCHAR(50) NOT NULL,
    FOREIGN KEY (brand_id) REFERENCES brands(id)
);

则查询语句改为:

SELECT b.brand_name, COUNT(c.id) AS total_cars
FROM brands b
INNER JOIN cars c ON b.id = c.brand_id
GROUP BY b.id, b.brand_name;
  • INNER JOIN:仅保留有对应车辆的品牌,自动过滤无车辆的品牌

修正后的PHP代码示例(PDO版,更安全)

<?php
// 数据库配置,替换为你的实际信息
$host = 'localhost';
$dbname = 'your_database_name';
$username = 'your_username';
$password = 'your_password';

try {
    // 建立PDO连接
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 执行查询
    $stmt = $pdo->query("SELECT brand, COUNT(*) AS total_cars FROM cars GROUP BY brand");
    $brandData = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 输出结果
    if (!empty($brandData)) {
        echo "<div class='brand-list'>";
        foreach ($brandData as $item) {
            // 用htmlspecialchars防止XSS攻击
            echo "<p>" . htmlspecialchars($item['brand']) . ":共 " . $item['total_cars'] . " 辆</p>";
        }
        echo "</div>";
    } else {
        echo "<p>暂无车辆数据</p>";
    }
} catch (PDOException $e) {
    echo "<p>数据库错误:" . $e->getMessage() . "</p>";
}
?>

关键注意事项

  • 必须使用参数化查询(PDO/mysqli的预处理语句)避免SQL注入,上面的PDO示例已遵循此规范
  • 输出品牌名称时用htmlspecialchars()转义,防止XSS攻击
  • 如果用mysqli扩展,可参考下面的示例:
<?php
$host = 'localhost';
$dbname = 'your_database_name';
$username = 'your_username';
$password = 'your_password';

// 建立mysqli连接
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败:" . $conn->connect_error);
}
$conn->set_charset("utf8mb4");

// 执行查询
$result = $conn->query("SELECT brand, COUNT(*) AS total_cars FROM cars GROUP BY brand");

// 输出结果
if ($result->num_rows > 0) {
    echo "<div class='brand-list'>";
    while ($row = $result->fetch_assoc()) {
        echo "<p>" . htmlspecialchars($row['brand']) . ":共 " . $row['total_cars'] . " 辆</p>";
    }
    echo "</div>";
} else {
    echo "<p>暂无车辆数据</p>";
}

$conn->close();
?>

内容的提问来源于stack exchange,提问作者Kuvalda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:23:13