繁体   English   中英

打印产品属性及其值

[英]print product attributes with their values

如何通过将每个值放在其所属的属性下来将属性和值一起打印。 因此有一个属性和多个值。

//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;

文件2

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

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

您想要一个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关键字进行控制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM