0

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

虽然,当在输入的文本区域中使用新的换行符时,通过输出 \r\n 来显示存储的数据时,这会弄乱格式。这是因为它显然两次逃脱了输入。

所以我想确保我没有误解准备好的语句的处理,并且下面的代码可以通过使用准备好的语句而不转义来避免 SQL 注入?

$var1 = $_POST['varFromForm'];

if ($insert = $dbconnection->prepare("INSERT etc.. ")) {
    $insert->bind_param('s', $var1);
    and so on..
4

1 回答 1

1

一个prepared statement的sql查询执行计划不能被参数改变,只能插入参数。所以你不需要转义变量。

于 2013-02-06T19:46:47.387 回答