到目前为止,在处理来自HTML表单的输入时,我一直在使用预处理语句和real_escape_string。示例:
$var1 = $dbconnection->real_escape_string($_POST['varFromForm']);
if ($insert = $dbconnection->prepare("INSERT etc.. ")) {
$insert->bind_param('s', $var1);
and so on..
虽然,当在输入的textarea中使用新的换行符时,通过输出\ r \ n来显示存储的数据时,这会搞乱格式化。这是因为它显然逃过了两次输入。
所以我想确保我没有误解与预准备语句的交易,并且通过使用预准备语句而不进行转义,以下代码可以免于SQL注入吗?
$var1 = $_POST['varFromForm'];
if ($insert = $dbconnection->prepare("INSERT etc.. ")) {
$insert->bind_param('s', $var1);
and so on..
答案 0 :(得分:1)
准备语句的sql查询执行计划不能通过参数更改,只能插入参数。所以你不需要转义变量。