Как искать в базе данных MySQL конкретную строку - PullRequest
3 голосов
/ 21 марта 2010

Я пытаюсь настроить функцию поиска на моем сайте, которая будет возвращать только точные совпадения с ключевым словом, введенным пользователем. Поэтому, если пользователь выполняет поиск «собака», я не хочу, чтобы в результатах поиска появлялась статья под названием «Собачий стиль» (просто пример, у меня нет статьи с таким именем). Это, конечно, делает именно это:

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

$ searchQuery - это переменная PHP, взятая из формы ввода пользователя. Так есть ли способ вернуть только точные совпадения?

Ответы [ 4 ]

4 голосов
/ 21 марта 2010
SELECT * FROM articles WHERE article_title = '$searchQuery'

вернет точное совпадение.Обратите внимание на изменение с «like» на «=» и обратите внимание, что знаки% были удалены.

Также никогда не используйте прямой ввод из пользовательской формы в качестве ввода для поиска в базе данных MySQL, поскольку это небезопасно.

1 голос
/ 21 марта 2010
SELECT * FROM articles WHERE article_title = '$searchQuery'
1 голос
/ 21 марта 2010

Для точных совпадений вы можете сделать:

SELECT * FROM articles WHERE article_title = '$searchQuery'

В MySql сравнения двоичных строк по умолчанию не чувствительны к регистру.

0 голосов
/ 18 июня 2018

Я думаю, что вы должны сделать так, это работает отлично.

SELECT * ИЗ статей WHERE article_title = '$ searchQuery'

выполнить (массив ( '%'. $ SearchQuery.% '))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...