2010-03-21 350 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'