我在db中有一个ENUM列,ENUM('us','uk','fr','intl')
我正在使用复选框来确认HTML中的国家/地区和PHP
SET country ='".$country_us." ".$country_uk." ".$country_fr." ".$country_intl."'
查询已通过,但未添加到列中。
如果我这样做
country ='$country_us'
- 它运作正常。
Here's我之前提出的更多信息问题。谢谢你的帮助!
答案 0 :(得分:3)
答案 1 :(得分:0)
听起来您正在尝试将多个值插入到单个ENUM
列中。这是不可能的。
如果您只有一个国家/地区值,我建议您使用单选按钮,然后您的第二个示例将正常工作。但是,由于您可能希望country_us
和 country_uk
,ENUM
列无法存储该信息。
更好的模型听起来就像你原来的问题中最好的解决方案。
答案 2 :(得分:0)
ENUM列表示您可以在其中存储仅一个值,该值必须是已定义的ENUM成员之一。
您应该将复选框转到单选按钮,这样用户只能选择一个国家/地区。在您的代码中,您将提取该单个值并将其插入到列中。
答案 3 :(得分:0)
您无法在(MySQL)ENUM列中存储多个值。 ENUM表示您可以准确插入为该列定义的值的一个。请改用SET列并更新其值,如下所示:
UPDATE ... SET country = 'uk,us';
即,分配以逗号分隔的允许值列表。有关详细信息,请参阅mysql documentation。
更好的是,为此使用单独的表:
CREATE TABLE country (
cty_id INTEGER NOT NULL PRIMARY KEY,
cty_code CHAR(2) NOT NULL UNIQUE,
cty_title VARCHAR(30) NOT NULL,
);
CREATE TABLE map_story_country (
story_id INTEGER,
cty_id INTEGER,
PRIMARY KEY (story_id, cty_id)
);
然后,为您要分配到故事/文章的每个国家/地区插入ID映射。