我正在寻找使用这种规范化表结构设置标签系统:
Table: Item
Columns: ItemID, Title, Content
Table: Tag
Columns: TagID, Tag_Name
Table: ItemTag
Columns: ItemID, TagID
如果Item表是我的常规信息表,我想要做的是在我的表单中有一个额外的单个文本字段,并要求用户插入他们的标记,用逗号分隔。没有什么不同寻常的,在网络上看到的。
我需要帮助的是查询,它采用逗号分隔的输入和:
有人可以帮我解决每个以逗号分隔的值的循环吗?
由于 丹
答案 0 :(得分:0)
在触摸数据库之前拆分/\s*,\s*/
上的标记列表,它会为您提供一组标记名称。然后标准化您的标签:强制它们为大写,小写,标题大小写,或适合您喜欢的任何一种情况。
现在您已准备好进入数据库的一些标签。不要费心检查它们是否已经存在;相反,向Tag.Tag_Name
添加一个唯一索引,然后继续插入标记列表中的所有标记并捕获并忽略唯一的违规错误。
现在,您拥有数据库中的所有代码,并且可以使用INSERT ... SELECT
填充ItemTag
,为您要执行此操作的每个代码添加:
insert into ItemTag (ItemId, TagID)
select $item_id, TagID
from Tag
where Tag_Name = $tag
其中$item_id
是相关项目的ID,$tag
是您附加到项目的特定标记。