Nadia
Nadia

Reputation: 41

How to search a MySQL database for a specific string

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?

Upvotes: 3

Views: 12999

Answers (4)

MadeinAdana GzTh
MadeinAdana GzTh

Reputation: 1

I think you should do like this, it works perfect.

SELECT * FROM articles WHERE article_title='$searchQuery'

execute(array('%'.$searchQuery.'%'))

Upvotes: -1

Steve Obbayi
Steve Obbayi

Reputation: 6085

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.

Upvotes: 4

Kevin Crowell
Kevin Crowell

Reputation: 10140

SELECT * FROM articles WHERE article_title = '$searchQuery'

Upvotes: 1

codaddict
codaddict

Reputation: 455400

For exact matches you can do:

SELECT * FROM articles WHERE article_title = '$searchQuery'

In MySql nonbinary string comparisons are case insensitive by default.

Upvotes: 1

Related Questions