@D3lphi

Почему некорректно работает метод mysqli::real_escape_string?

Не так давно заметил, что метод mysqli::real_escape_string работает некорректно. А именно, он вносит неэкранированную строку в базу данных.

К примеру, есть код:
$db = new mysqli('localhost', 'root', '', 'db');
$db->set_charset("utf8");

$val1 = $db->real_escape_string('"str"ing1""');
$val2 = $db->real_escape_string('string"2"v');
$query = $db->query("INSERT INTO `test` VALUES ('','$val1', '$val2', '1765')");

echo $val1 . "<br>";
echo $val2;


После его выполнения, как и следует ожидать на экран выводиться 2 экраннированных строки: \"str\"ing1\"\" и
string\"2\"v. Но в базу данных вносятся исходные данные: "str"ing1"" и string"2"v.

Что делать? Или, может быть, я чего-то не понимаю?
Версия php: 5.4
  • Вопрос задан
  • 328 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Всё правильно. Функция real_escape_string готовит строку для передачи от клиента серверу. Сервер восстанавливает строку в исходный вид.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы