поиск по одинарной кавычке php - PullRequest
0 голосов
/ 18 января 2010

Я хочу найти mc'd в моей базе данных, но я использую mysql_real_escape_string.

Но ничего не найдено, потому что он выдаст mc \\ 'd

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 18 января 2010

mysql_real_escape_string должен возвращать одинарные кавычки, экранированные только с одной обратной косой чертой, поэтому мое дикое предположение заключается в том, что в вашем php.ini включен magic_quotes_gpc.Выключи это, и все будет хорошо.

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

Попробуйте использовать Объекты данных PHP вместо mysql_query(). Тогда вам не нужно mysql_real_escape_string(), потому что PDO заботится о правильной передаче параметров внутри. (Он будет использовать параметры связывания, если база данных поддерживает их, в противном случае он будет выполнять экранирование для вас.)

С точки зрения SQL-инъекций это безопаснее, чем создавать необработанные строки запроса вручную и не забывать о том, чтобы избежать всего. Значения параметров приведены отдельно от SQL, поэтому нет возможности злонамеренного ввода изменить структуру запроса.

0 голосов
/ 18 января 2010

Использовать косые черты при вставке в базу данных и использовать полоски при извлечении из базы данных.

и в вашем состоянии добавление двух косых черт к ', так что я думаю, что это из-за того, что вы включили волшебную цитату.

Так что будет лучше, если вы отключите волшебную цитату и затем выполните поиск.

Так что после отключения магической цитаты это даст md'c --> md\'c.

Надеюсь, это поможет вам.

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