来自fetch_assoc()的PHP唯一值

时间:2014-05-17 16:22:11

标签: php mysqli unique

我有一个产品数据库,每个产品都有一个或多个标签。例如,我的查询结果是:

//Query results
product_id  tag
12345       Kitchen
12345       Mixer
12345       Baking

如何显示给定产品的所有标签,并仅列出产品一次,以便我的输出如下:

Product ID: 12345 
Tags: Kitchen Mixer Baking

目前,我正在使用fetch_assoc()并循环显示所有内容的行。实现这一目标的最佳方法是什么?

以下是我目前的代码:

$sql = <<<SQL
    SELECT p.product_id, t.tag
    FROM products p
    JOIN tags t
    ON p.product_id = t.product_id
    WHERE p.product_id='12345'
SQL;

$db = new mysqli('localhost', 'user', 'password', 'dbname');

if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}

if(!$result = $db->query($sql)){
    die('There was an error running the query [' . $db->error . ']');
}

while($row = $result->fetch_assoc()){
    echo $row['product_id'] . '<br>';
    echo $row['tag'] . '<br>';
}

1 个答案:

答案 0 :(得分:1)

使用GROUP_CONCAT()功能:

SELECT p.product_id, GROUP_CONCAT(t.tag)
FROM products p
JOIN tags t
ON p.product_id = t.product_id
WHERE p.product_id='12345'
GROUP BY p.product_id