从产品表中获取数据,其中类别值以序列化格式存储

时间:2013-10-01 02:44:44

标签: php mysql sql serialization

在table_product中添加产品时,我有一个名为“category”的列。在某些时候,我可以为任何产品提供多个类别,这就是我以serialize格式存储所有类别列表的原因。

如何从特定类别中提取product_nameproduct_imageproduct_id

说,我有这个网址http://www.example.com/category.php?cid=29,所以我想显示该特定类别的所有产品。因此,我在php-mysql

中运行了以下命令
"Select product_id, product_name, product_image from product where category='Select name from category where cid="29"';

我的空位。因为category中的product table列如下: -

a:3:{i:0;s:5:"Apple";i:1;s:6:"Iphone";i:2;s:9:"Iphone 5S";}

任何解决方案都可以解决我的问题。

请原谅我的英语不好。

1 个答案:

答案 0 :(得分:1)

不要将类别存储为序列化数据,而是使用关系表:

create table product_category (
    product_id int,
    category_id int);

然后,要查找特定类别的产品,请使用联接:

select p.*
from product p
join product_category pc on p.product_id = pc.product_id
where pc.category_id = 29;

这就是你应该如何在RDBMS中建立多对多关系。