我正在提出一个新问题,因为另一个问题是不活跃的,并且已经发生了很大变化。我的db代码是这样的:
$sql2="INSERT INTO $tbl_name(s_id, s_name, s_email, s_content)VALUES('$id', '$s_name', '$s_email', '$s_content')";
$result2=mysql_query($sql2);
if($result2){
echo "Successful<BR>";
}
else {
echo "ERROR";
}
我可以输入字母数字,但不能输入'或' - 我如何使用mysql_real_escape_string()来解决这个问题?谢谢。
答案 0 :(得分:6)
在将字符串注入SQL查询之前,只需使用mysql_real_escape_string()
来转义字符串。
例如:
$s_name_escaped = mysql_real_escape_string($s_name);
$s_email_escaped = mysql_real_escape_string($s_email);
$s_content_escaped = mysql_real_escape_string($s_content);
$sql2="INSERT INTO $tbl_name(s_id, s_name, s_email, s_content)
VALUES('$id', '$s_name_escaped', '$s_email_escaped', '$s_content_escaped')";
答案 1 :(得分:0)
mysql_real_escape_string()
不会阻止您使用可能促进SQL注入的“或”之类的字符。它只是转义这些字符,因此MySQL将它们解释为文字值而不是查询中的命令。
你回答的是,只需使用它。你不需要做任何其他事情。
答案 2 :(得分:0)
您应该使用mysql_real_escape_string
:
$name = mysql_real_escape_string($s_name);
$email = mysql_real_escape_string($s_email);
$content = mysql_real_escape_string($s_content);
$sql2 = "INSERT INTO $tbl_name(`s_id`, `s_name`, `s_email`, `s_content`) \n";
$sql2.= "VALUES('$id', '$name', '$email', '$content')";