gpt4 book ai didi

php - 如何使用 PHP 使用 GROUP_CONCAT MySQL 循环行

转载 作者:行者123 更新时间:2023-11-29 06:19:54 25 4
gpt4 key购买 nike

我正在尝试循环来自不同类别的产品,如下所示:

 $sql = query("SELECT c.name AS 'cat_name', c.image AS 'image', 
GROUP_CONCAT(DISTINCT p.title ORDER BY p.title DESC SEPARATOR ' ') AS 'product_name'
FROM products p
INNER JOIN categories c
ON p.category_id = c.id
GROUP BY p.category_id");
confirm($sql);

while($category = mysqli_fetch_array($sql)) {
$content = <<<DELIMITER


<li class="col-md-3 col-sm-6">
<ul>
<li class="dropdown-header">{$category['cat_name']}</li>
<li><a title="Title" href="#">{$category['product_name']}</a></li>

</ul>
</li>



DELIMITER;

echo $content;
}

上面的脚本产生如下结果:

类别名称
产品 1 产品 2...

我想要这样列出产品:

类别名称
产品一
产品2
...

我做错了什么?

最佳答案

GROUP_CONCAT 函数让您对每个类别只有一行的响应。它会将所有具有相同类别的行连接成一个。

你有两种可能:

  1. 使用 GROUP_CONCAT :每一行将包含您的类别以及所有串联的产品。然后您应该拆分“产品名称列表”的串联以正确显示它们。

  2. 不要使用 GROUP_CONCAT :您按类别名称对结果进行分组。在您的循环中,您检查类别名称何时更改,然后相应地更改您的 html。


编辑:

您的变量 $category['product_name'] 包含由函数 GROUP_CONCAT 使用分隔符 space 连接的产品名称。如果你写

echo $category['product_name']

它会打印

Product 1 Product 2...

您可以使用 split()(已过时)或 explode()分隔产品名称。然后,您需要遍历 explode() 返回的数组以获取每个 Product。

但是如果您的产品名称中包含空格,使用 GROUP_CONCAT 以空格作为分隔符并以空格作为分隔符进行拆分,您会得到太多结果。我建议您使用另一个不能在产品名称中使用的分隔符。

关于php - 如何使用 PHP 使用 GROUP_CONCAT MySQL 循环行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com