PHP MYSQL:搜索单词查询

时间:2012-02-19 08:08:40

标签: php mysql search tags

我需要提交查询以搜索具有特定标记的帖子。数据库中的单元格是这样写的:“有趣的技术好”所以每个单词都描述一个标签。所以我已经编写了这段代码,以便获得一个带有“有趣”标签的帖子。

'SELECT * FROM `posts` WHERE `post_tag` = "funny" ORDER BY `post_id` DESC LIMIT 50'

不幸的是,它没有给我任何结果。这里有什么问题?

4 个答案:

答案 0 :(得分:1)

使用LIKE关键字或以每个条目1个标签的方式存储您的代码。

 SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50

然而,这会找到包含其他标签的标签,因此搜索“java”也会找到“javascript”,

答案 1 :(得分:1)

查询WHERE post_tag LIKE "%fun%"也会匹配“搞笑”,“失效”等等。但是你很幸运,因为MySQL也支持perl风格的正则表达式,你可以说

WHERE post_tag RLIKE "\bfun\b"

(确保sql引擎看到反斜杠)。这只会将“有趣”与完整的单词相匹配。

答案 2 :(得分:0)

试试这个。

SELECT * FROM `posts` WHERE `post_tag` LIKE  "%funny%" ORDER BY `post_id` DESC LIMIT 50'

答案 3 :(得分:0)


'SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50'

//OR to get tags starting with funny
'SELECT * FROM `posts` WHERE `post_tag` LIKE "funny%" ORDER BY `post_id` DESC LIMIT 50'

参考:LIKE