2010-03-21 473 views
3

我想在我的网站上设置一个搜索功能,该功能只会返回与用户输入的关键字完全匹配的搜索功能。因此,如果用户搜索“狗”,我不希望在搜索结果中出现标题为“小狗样式”的文章(只是一个例子,我没有真正拥有该名称的文章)。当然,这正是:如何在特定的字符串中搜索MySQL数据库

SELECT * FROM articles WHERE article_title LIKE '%$searchQuery%' 

$ SEARCHQUERY这里是从用户的输入中取出的PHP变量。那么有什么办法可以只返回完全匹配吗?

+0

如何定义“精确”匹配,区分大小写和空格分隔(例如“狗走路”,但不是“小狗饼干”或“狗吃狗世界”)? –

+1

为什么你没有使用全文搜索? http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html –

+0

@ drorhan我会研究它,看起来很有趣。 – Nadia

回答

4
SELECT * FROM articles WHERE article_title = '$searchQuery' 

将返回精确匹配。注意从'like'到'='的变化,并注意到%符号已被删除。

此外,请确保永远不要使用来自用户表单的直接输入作为输入来搜索您的MySQL数据库,因为它是不安全的。

+0

呃,我自己没有想到这个,我感到很蠢。谢谢! – Nadia

1

精确匹配,你可以这样做:

SELECT * FROM articles WHERE article_title = '$searchQuery' 

在MySQL非二进制字符串比较是区分默认情况下不区分大小写。

1
SELECT * FROM articles WHERE article_title = '$searchQuery'