Поиск не возвращает строк в запросе MySQL, используя LIKE и значения, имеющие "\" - PullRequest
0 голосов
/ 20 января 2010

У меня есть некоторые проблемы, связанные с поиском в MySQL. Ниже мой запрос.

SELECT * FROM table WHERE name LIKE "%admin\'s%";

Когда я выполняю этот запрос, он возвращает ноль данных.

На самом деле у меня есть "admin \ 's', хранящиеся в БД. это "\", чтобы предотвратить инъекцию sql. я использовал mysql_real_escape_string, чтобы предотвратить инъекцию sql.

но когда я использую три раза addlashes к моей переменной, это работает.

Так что мой следующий запрос работает.

SELECT * FROM table WHERE name LIKE "%admin\\\\\\\'s%";

Мой запрос, приведенный выше, вернет данные с именем, аналогичным имени администратора.

Я не понимаю, где я не прав.

1 Ответ

1 голос
/ 20 января 2010

хорошо, для одного вы не должны иметь такие данные в администраторах вашей БД .. скорее всего, вы дважды избежали строки (проверьте, не включены ли на вашем сервере magic_quotes).

Если вы только делаете

INSERT ... username = "admin\'s";

у вас в базе данных будет имя пользователя admin поэтому я рекомендую удалить косые черты из вашей базы данных, и тогда ваш первый запрос будет работать.

...