Как искать в SQL мошенничество со звездочкой? - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать расширенный поиск в моей базе данных. Я хочу сделать что-то вроде этого: если пользователь для поиска типа = overf**w и у меня в базе данных есть клочок, что его значение = overflow - покажи ему. это мой код:

$name = str_replace('*', '_', $name);
SELECT name FROM table WHERE name LIKE CONCAT('%', ?, '%')

не работает, я не знаю в чем проблема.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы не можете использовать LIKE в этой ситуации, вам нужно использовать REGEXP () для поиска по шаблону.Заменить * или ** на .*.Чтобы возвращать только имена, начинающиеся с заданного значения, используйте ^ в начале регулярного выражения

SELECT name 
FROM actors 
WHERE name REGEXP('^overf.*w')

Я не знаю php, но ваш параметр $ name должен быть установлен следующим образом (в псевдокоде)

$name = '^' + replace($name, '**', '.*') 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...