Итак, в этой программе, которую я пишу, я фактически получаю SQL-запрос от пользователя с помощью формы. Затем я выполняю этот запрос в своей базе данных.
Я знаю, что нельзя «доверять» вводимым пользователем данным, поэтому я хочу провести дезинфекцию ввода. Я пытаюсь использовать mysql_real_escape_string
, но мне не удалось заставить его работать.
Вот что я пытаюсь, учитывая ввод:
select * from Actor;
//"query" is the input string:
$clean_string = mysql_real_escape_string($query, $db_connection);
$rs = mysql_query($clean_string, $db_connection);
if (!$rs)
{
echo "Invalid input!";
}
Это ВСЕГДА дает мне ошибку
«Неверный ввод!»
.
Когда я беру часть clean_string
и просто запускаю mysql_query
по запросу,
"недействителен input "
сообщение не выводится. Скорее, когда я делаю это:
$rs = mysql_query($query, $db_connection);
if (!$rs)
{
echo "Invalid input!";
}
Оно НЕ выводит
" недопустимый ввод ".
Однако мне нужно использовать функцию mysql_real_escape_string
. Что я делаю не так?
Обновление:
Учитывая
select * from Actor;
в качестве входных данных, я обнаружил следующее.
Используя операторы эха, я
обнаружил, что перед дезинфекцией строка содержит значение:
выберите * от актера;
что правильно. Однако после дезинфекции он держит неверный
значение выберите * \ r \ nfrom Actor;
, отсюда и сообщение об ошибке. Почему
mysql_real_escape_string
делает это?