如何在PHP中使用mysql_real_escape_string函数

Cas*_*ton 5 php mysql mysql-real-escape-string

所以在我写的这个程序中,我实际上是使用表单从用户那里获取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!"; 
} 
Run Code Online (Sandbox Code Playgroud)

这总是给我的

"输入无效!"

错误.

当我取出clean_string部分并运行mysql_query查询时,

"输入无效"

消息未输出.相反,当我这样做时:

$rs = mysql_query($query, $db_connection); 
if (!$rs) 
{ 
   echo "Invalid input!"; 
} 
Run Code Online (Sandbox Code Playgroud)

它不输出

"输入无效".

但是,我需要使用该mysql_real_escape_string功能.我究竟做错了什么?

更新:

鉴于 select * from Actor;作为输入,我发现以下.

使用echo语句我发现在清理之前,字符串保存了值: select * from Actor; 这是正确的.但是,在清理后它会保留不正确的值select *\r\nfrom Actor;,因此会显示错误消息.为什么 mysql_real_escape_string这样做?

Cra*_*ent 13

将它用于查询中的实际值,而不是整个查询字符串本身.

例:

$username = mysql_real_escape_string($_POST['username']);
$query = "update table set username='$username' ...";
$rs = mysql_query($query);
Run Code Online (Sandbox Code Playgroud)