2012-02-28 4 views
0

Я использую mysql_real_escape_string() перед пересылкой информации в базу данных, но когда я хочу показать данные из базы данных, «заменяется на». Итак, как я могу избавиться от этой обратной косой черты? Есть ли функция, которая меняет mysql_real_escape_string()?Избавление от обратных косых черт

+3

'mysql_real_escape_string()' не добавляет обратную косую черту к окончательным данным. Должно быть что-то еще происходит, как двойное экранирование или магические цитаты –

+0

Вправо. Попробуйте отключить магические кавычки в php.ini или с помощью [этого фрагмента] (http://www.php.net/manual/en/security.magicquotes.disabling.php). Если это не работает, и вам нужно быстрое исправление, вы можете использовать 'stripslashes'. –

+1

Я думаю, у вас включен режим «magic_quotes_gpc» - отключите его. Кстати, вы должны использовать [PDO] (http://php.net/manual/en/book.pdo.php) как уровень доступа к базе данных вместо функций 'mysql _ *()'. – Crozin

ответ

2
  1. Там нет НИКАКОЙ [встроенной] функции обратного mysql_real_escape_string.
  2. Если у вас есть только кавычки, но не разрывы строк - это не ошибка mysql_real_escape_string.
  3. Вместо того, чтобы зачищать, вам, видимо, нужно сделать свой код , чтобы не добавлять их.
  4. Есть 2 возможные причины слешами появляться:
    • magic_quotes_gpc включен. Just turn it off.
    • некоторые посторонние данные-sanitize функция. Избавиться от этого.
  5. Просто чтобы убедиться: не то, что «информация», но только строки (части запроса, заключенные в кавычки) должны быть экранированы. Для любой другой части запроса маскирование бесполезно и you have to find another way to protect them from SQL injection
2

Вы должны отключить magic_quotes, хотя mysql_real_escape_string не добавляет обратную косую черту в базе данных, которая используется только для выхода из строя.

Однако вы можете использовать stripslashes(), чтобы удалить их, но более элегантное решение для offmagic_quotes

+0

'mysql_real_escape_string' добавляет косые черты, они просто удаляются MySQL. Проблема заключается в том, что 'mysql_real_escape_string' ускользает от косых черт (которые предположительно приходят из магических кавычек) с большим количеством косой черты. –

+0

@ Даниэль: Да, это просто для экранирования строки и не хранится в базе данных –

Смежные вопросы