How to search a MySQL database for a specific string
Solution 1
SELECT * FROM articles WHERE article_title = '$searchQuery'
would return an exact match. Notice the change from 'like' to '=' and notice the % signs have been removed.
Also be sure never to use direct input from a user form as input to search your MySQL database as it is not safe.
Solution 2
For exact matches you can do:
SELECT * FROM articles WHERE article_title = '$searchQuery'
In MySql nonbinary string comparisons are case insensitive by default.
Solution 3
SELECT * FROM articles WHERE article_title = '$searchQuery'
Nadia
Updated on June 23, 2022Comments
-
Nadia almost 2 years
I am trying to set up a search feature on my site that will only return exact matches to keyword entered by the user. So if the user searches "dog" I don't want an article titled "Doggy Style" to appear in the search results (just an example I don't really have an article by that name). This of course does exactly that:
SELECT * FROM articles WHERE article_title LIKE '%$searchQuery%'
$searchQuery here is a PHP variable taken from the user's input form. So is there any way to return only exact matches?
-
Matthew Flaschen about 14 yearsHow do you define "exact" matches, case-sensitive and space-separated (e.g. "the dog walked" but not "doggy biscuit" or "Dog Eat Dog World")?
-
Orhan Cinar about 14 yearswhy you are not using Full text Search ? dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
-
Nadia about 14 years@ drorhan I will look into it, seems interesting.
-
-
Gricey almost 6 yearsWhat does this add 7 years later which other answers don't provide?