How to search a MySQL database for a specific string

12,940

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'
Share:
12,940
Nadia
Author by

Nadia

Updated on June 23, 2022

Comments

  • Nadia
    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
      Matthew Flaschen about 14 years
      How 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
      Orhan Cinar about 14 years
      why you are not using Full text Search ? dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
    • Nadia
      Nadia about 14 years
      @ drorhan I will look into it, seems interesting.
  • Gricey
    Gricey almost 6 years
    What does this add 7 years later which other answers don't provide?