更新mysql中的逗号值

时间:2011-01-09 00:22:02

标签: php mysql

我在mysql中有一个产品表,其中一个字段(属性字段)包含逗号值,如attibutes_1,attibutes_2等。 在我的表单中,我有一个复选框foreach属性到我的产品,像这样的HTML

<input type="checkbox" value="attributes_1" name="attributes[$id][]">
<input type="checkbox" value="attributes_2" name="attributes[$id][]">

我的问题是,...我如何更新这些属性值?如果尝试使用implode

  $coma_values = implode(',',$_POST['attributes'][$id]);

并将其更新到表中,但有时并不完美。请帮助我寻求更好的解决方案

2 个答案:

答案 0 :(得分:0)

您需要一个单独的属性表,然后使用id字段链接这两个表。

table 1:
id, somedata1, somedata2

table 2:
id, table1_id, attribute_name, attribute_value

或类似的东西。 table1_id将具有与第一个表中的匹配id相关的值。这样,您可以在记录和属性之间建立一对多的关系。这将允许您使用JOIN查询从一个结果集中的两个表中提取数据。你永远不应该在一个字段中存储逗号分隔值。

答案 1 :(得分:0)

如果您通过将多个数据合并到一个列中来违反基本关系数据库理论,那么您将永远不会有一个完美,甚至非常好的解决方案。既然你没有说明你的实际问题是什么,没有人能够帮助你解决它,但我猜测它是包含在应该是单个表达式的东西中的逗号,或者是否超出了字段长度。

解决方案是使用数据表的主键将这些属性存储在一个或多个与主数据表相关的子表中。为了更好地了解如何执行此操作,您必须指定属性中存储的确切内容。