如何在PHP中使用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!\";
}
这总是给我
\“输入无效!\”
错误。
当我取出clean_string
部分并仅对查询运行mysql_query
时,
\“无效
输入\“
信息不输出。相反,当我这样做时:
$rs = mysql_query($query, $db_connection);
if (!$rs)
{
echo \"Invalid input!\";
}
它不输出
\“输入无效\”。
但是,我需要使用“ 0”功能。我究竟做错了什么?
更新:
给定
select * from Actor;
作为输入,我发现了以下内容。
我已经使用echo语句
发现在清除之前,该字符串包含以下值:
select * from Actor;
哪个是正确的。但是,经过消毒后,它不正确
值select *\\r\\nfrom Actor;
,因此出现错误消息。为什么是
mysql_real_escape_string
正在这样做?
没有找到相关结果
已邀请:
6 个回复
寒健
窃誓额
钨蜡唤喉晤
是字符串转义功能。它不会使任何输入安全,只是使字符串值安全,不能与LIKE子句一起使用,并且整数仍需要以不同的方式处理。 一个更简单,更通用的示例可能是:
请注意,对于SQL字符串,每个变量如何仍必须用“ 14”单引号引起来。 (否则转义将毫无意义。)
泉秘胁
臀博
输出是 插入some_table值(\\\'xyz \\\', \\\'abc \\\',\\\'123 \\\'); 这不再是有效的查询。
庞协腿宛炯