Я думаю, вы понимаете, это не так, real_escape_string()
только экранированные символы, как '
"
и т.д., которые могут ошибка запроса с помощью \
, но это не удалить его в строке.
так, что вставляется в базу данных правильно :)
его так:
echo "\"this is a double quote";
, как вы видите, это должно быть ошибка во всех браузерах, но так как мы используем \
для избежать двойной кавычки, это будет интерпретироваться как строковый литерал.
Edit: Он может защитить вас в SQL-инъекции, делая MySQL интерпретирует '
в качестве символьной строки. , что произойдет, если вы не используете real_escape_string();
$fn = " 'Jim ";
$ln = " 'John ";
$first_name = $fn;
$last_name = $ln;
$conn->query("INSERT INTO users (first_name,last_name)
VALUES('{$first_name}','{$last_name}') ");
после того, как запрос был выполнен, SQL оператор будет:
INSERT INTO users (first_name,last_name) VALUES(''Jim',''John')
и что будет синтаксическая ошибка в SQL
так что, если кто-то назовет свое имя '; drop table tablename;
, вопрос будет таким, как этот
INSERT INTO users (first_name,last_name) VALUES(''; drop table tablename;',''John')
после этого запрос выполняется, taadaaa ваш стол ушел
Опишите, что вы подразумеваете под "can not use". Что не работает? – CGritton
Что случилось с результатом? Переменные попали в базу данных по назначению. Если вы не использовали 'real_escape_string', вы получили бы синтаксическую ошибку, но избежать этого не удалось. – Barmar