我们假设我们有一个带有这些描述的产品(如此显示,每行一个):
描述1
描述2
描述3
描述4
说明N
将这些产品描述存储在数据库表中的最佳方法是什么,以便它们可以显示在"描述"动态产品页面的标签。
我想避免创建N个不同的表列,每个描述一个。
感谢您的建议
答案 0 :(得分:1)
创建另一个关系表。
产品表:
id
name
serial
....
描述表:
id
product_id
description
order / could be 1,2,3,n/
然后你可以:
$sql = "SELECT * FROM descriptions"
. " WHERE product_id = " . $productId . ""
. " ORDER BY `order`";
详细了解:http://en.wikipedia.org/wiki/Database_normalization
修改强>
我已经添加了订单栏,因为我想假设您要以正确的顺序显示说明。如果您不使用此order
字段,则无法确定,当您选择1个产品的说明时,您会收到哪个订单。
id | product_id | description | order
1 1 This is the 1
first desc
2 1 This is the 3
3rd
3 1 This is the 2
2nd
因此您可以自由地按任何顺序添加说明,但保留正确的顺序。 order
字段名称可以是任何其他名称,例如:desc_order
。
答案 1 :(得分:0)
如果您对每个产品有大量描述,我建议您创建一个与产品表有关系的新表。现在,您可以创建一对多(或添加一个复合表的多对多)关系,而不必担心您获得了多少不同的描述。
之后,您可以使用JOIN子句
获取产品的所有描述答案 2 :(得分:0)
如果你想分开每个描述,那么你可以使用一个数组,然后使用json_encode()数组。
<?php
$text = [
[0] => 'desc 1',
[1] => 'desc 2',
...
];
$json_text = json_encode($text);
// save $json_text to the field.
// to extract the from table
$text = json_decode($text);
for($text as $t) {
echo $t; //the descs.
}
您也可以使用serialize()。
这只是一个选项,然后使用相对表,但为了更快地获取数据,您可以使用此方法。
答案 3 :(得分:0)
如果您有多种类型的产品并且有特殊描述,那么您可以在设计中使用订单项概念, 请参阅此example
例如,您可以拥有以下两个表:
Producttbl( productID ,productName,totalnumber,baseprice)
Productitemtbl(itemid, productid ,说明,价格,折扣)
如果您有商店,这是存储产品及其说明的有效方法之一!