MySql / php - 标签系统

时间:2013-01-20 22:51:56

标签: php mysql

我正在实施标签系统......

目前我的表格tags包含namedescriptioncreatedby字段。

包含字段images的表tags。在此字段中,我将从表tags中放置标记名称,以逗号分隔。

但是,如果我想获取带有标签Foo的所有图像,我该如何形成查询?因为该字段将包含以逗号分隔的多个标记。

3 个答案:

答案 0 :(得分:3)

不确定您是否考虑过对图像表进行规范化,但这是最佳解决方案。

而不是

enter image description here

以这种方式构建你的表

enter image description here

然后,您可以运行此SQL语句以返回具有特定标记的所有图像

SELECT * FROM images
WHERE tags = 'forest';

或者,如果您需要将表格保留为当前格式,则可以使用

SELECT * FROM images
WHERE tags LIKE '%forest%';

上述两个示例中的“森林”一词是您要搜索的标签

答案 1 :(得分:2)

尝试类似的东西:

SELECT * FROM images WHERE tags = 'Foo' OR tags LIKE 'Foo,%' OR tags LIKE '%,Foo' OR tags LIKE '%,Foo,%'

答案 2 :(得分:0)

tags字段中存储代码ID,如下所示:',3,17,55,'

当您执行查询到数据库时,您将能够使用 fast 构造,如下所示:

SELECT * FROM images WHERE INSTR(tags,',$tag_id,')>'0'

而不是使用“LIKE'%$ tag_id'” slow