使用其值打印产品属性

时间:2014-02-15 15:04:56

标签: php mysql

如何通过将每个值放在其所属的属性下来打印属性和值。所以一个属性和几个值在。

之下
//i can have the array the normal way if it helps, like [0] => Red...
[attribute] => Array
    (
        [0] => Array
            (
                [Colour] => Red
            )

        [1] => Array
            (
                [Colour] => Blue
            )

        [2] => Array
            (
                [Colour] => Green
            )

        [3] => Array
            (
                [Size] => Small
            )

        [4] => Array
            (
                [Size] => Medium
            )

        [5] => Array
            (
                [Size] => Large
            )

    )

如果可以在查询中通过返回一个属性而不是多个属性以及随之而来的值来完成,那就太好了。但是我也希望通过打印一次数组键然后输入数值来看到这一点,我会给它+1。

SELECT `attribute`, `value` 
FROM (`attribute_value`) 
JOIN `product_attr_value` ON `product_attr_value`.`attribute_value_id` = `attribute_value`.`id`  
JOIN `products` ON `products`.`id` = `product_attr_value`.`product_id` 
WHERE `products`.`item_name` LIKE '%qwe2%'

编辑:

文件1

for ($set = array (); $row = $result->fetch_assoc(); $set[] = $row);

return $set;

file2的

foreach ($attr_value as $val)
{
echo $val['attribute'] ."<br>";

$values = $val['group_concat(`value`)'];
$value = explode(",", $values);
echo $value."<br>";
}

1 个答案:

答案 0 :(得分:0)

您需要group by

SELECT attribute, group_concat(`value`)
FROM attribute_value av JOIN
     product_attr_value pav
     ON pav.attribute_value_id = av.id JOIN
     products p
     ON p.id = pav.product_id
WHERE p.`item_name` LIKE '%qwe2%'
group by attribute;

我还添加了表别名,以避免在整个查询中重复长表名。

group_concat()会将值连接成一个字符串。默认情况下,它们用逗号分隔。您可以使用SEPARATOR关键字控制它。