使用HTML表单和PHP预处理语句

时间:2013-02-06 19:39:29

标签: php mysqli sql-injection

到目前为止,在处理来自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..

1 个答案:

答案 0 :(得分:1)

准备语句的sql查询执行计划不能通过参数更改,只能插入参数。所以你不需要转义变量。