Итак, в этой программе, которую я пишу, я на самом деле получаю запрос 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
по запросу, сообщение
"неверный ввод"
не являетсявыход.Скорее, когда я делаю это:
$rs = mysql_query($query, $db_connection);
if (!$rs)
{
echo "Invalid input!";
}
НЕ выводит
«неверный ввод».
Однако мне нужно использоватьmysql_real_escape_string
функция.Что я делаю не так?
Обновление:
Учитывая select * from Actor;
в качестве ввода, я нашел следующее.
Использование выражений echoЯ обнаружил, что перед очисткой строка содержит значение: select * from Actor;
, что является правильным.Однако после очистки он имеет неправильное значение select *\r\nfrom Actor;
, поэтому появляется сообщение об ошибке.Почему mysql_real_escape_string
делает это?