php - 如何在MySQL和PHP中显示所有产品的所有类别?

标签 php html mysql sql

我是 MySQL 和 PHP 的初学者,我需要你的帮助来了解解决方案。我想显示产品和相关类别的列表。产品和类别是多对多的关系。谷歌的解决方案让我很困惑。我将非常感谢任何建议。

我的代码显示重复的产品。重复次数与类别相同。 例如:

Product1 - Category1;
Product1 - Category2;
Product1 - Category3;
Product2 - Category1;
Product3 - Category3;

index.php:

$result = $pdo -> query('
SELECT product.id, 
       product.name AS product_name, 
       seller.name AS seller_name, 
       category.name AS category_name
  FROM product
  LEFT JOIN seller ON product.sellerid = seller.id
  LEFT JOIN product_category ON product.id = product_category.productid
  LEFT JOIN category ON product_category.categoryid = category.id
');

foreach($result as $row)
{
    $products[] = array(
        'id' => $row['id'], 
        'product_name' => $row['product_name'],
        'seller_name' => $row['seller_name'],
        'category_name' => $row['category_name']
    );
}

index.html.php:

<ul>
    <?php foreach($products as $product): ?>
    <li>
        <span><?php htmlout($product['id']); ?></span>
        <span><?php htmlout($product['product_name']); ?></span>
        <span><?php htmlout($product['seller_name']); ?></span>
        <ul>
            <li>
                <span><?php htmlout($product['category_name']); ?></span>
            </li>
        </ul>
    </li>
    <?php endforeach; ?>
</ul>

如何显示每个产品的所有类别?循环应该是什么样子?我想实现:

Product1 - Category1, Category2, Category3;
Product2 - Category1;
Product3 - Category3;

最佳答案

您可以使用GROUP_CONCAT()获取每行中的所有卖家和类别。

SELECT product.id, product.name,
    GROUP_CONCAT(DISTINCT seller.name) AS sellers,
    GROUP_CONCAT(DISTINCT category.name) AS categories
  FROM product
  LEFT 
  JOIN seller 
    ON product.sellerid = seller.id
  LEFT 
  JOIN product_category 
    ON product.id = product_category.productid
  LEFT
  JOIN category 
    ON product_category.categoryid = category.id
GROUP BY product.id

关于php - 如何在MySQL和PHP中显示所有产品的所有类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510464/

相关文章:

mysql - 将变量值插入mysql表

PHP/MySQL(电子小说)防止单个用户多重评级

php - Twig 使用 slim 框架渲染空页面

mysql - 如何将一个实体与另一个可以(但不总是)属于的实体相关联

javascript - 缩放 Firefox 时关键帧动画闪烁

html - 条件注释从哪里获取信息?

php - 某些数据库条目被忽略

php - 2 个键的数组中未定义键 1

php - phpmyadmin中创建函数错误

HTML emsp 实体确切行为