Смысл использования mysql_real_escape_string состоит в том, чтобы экранировать символы для вашего запроса, поэтому то, что вы видите в своей базе данных, является правильным (в противном случае, если вы используете SQL SELECT, это даст вам строку с обратными слешами).
Итак, ваш запрос выглядит так: INSERT INTO test (text) VALUES ("<a href=\"http://foo.com\">foo</a>")
, который вставляет его в текстовый столбец как <a href="http://foo.com">foo</a>
.
\
- это просто для запроса mysql, что вы используете символ "
вместо закрытия строки. Когда у вас есть волшебные кавычки, это все равно, что дважды * * * * * * * * * * * * * * * * '' сделать '' дважды в переменной '*. Вот почему magic_quotes устарела и должна быть отключена. Это небезопасно и оставляет вас открытым для атаки.
Чтобы ответить на ваш вопрос, отключив магические кавычки и используя mysql_real_escape_string
, вы защищены от внедрения SQL