PHP MYSQL:搜索词查询


PHP MYSQL: search word query

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

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

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

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

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

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

查询WHERE post_tag LIKE "%fun%"也会匹配"funny"、"defunct"等。但你很幸运,因为MySQL也支持perl风格的正则表达式,你可以说

WHERE post_tag RLIKE "'bfun'b"

(请确保sql引擎看到反斜杠)。这只会匹配"有趣"作为一个完整的词。

试试这个。

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

'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