mysqli准备好的语句删除新行

时间:2015-12-08 10:38:33

标签: php mysql mysqli prepared-statement

我一直在使用“标准”mysqli查询,但决定使用预准备语句以提高安全性。除了在将数据添加到数据库时删除新行以外,一切正常。以下是一些查询的示例:

$stmt=mysqli_prepare($GLOBALS["mysqli"], "UPDATE products SET product_description=? WHERE product_id=?");
if ($stmt)
    {
    mysqli_stmt_bind_param($stmt, "si", $product_description, $product_id);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_close($stmt);
    }

$ product_description是来自textarea的变量(通过POST表单提交),并且它有新行。将数据添加到数据库时,它看起来像:

  

FIRSTLINE \ r \ nSECONDLINE

我知道表单或代码本身没有问题,因为如果我使用这个查询:

mysqli_query($GLOBALS['mysqli'], "UPDATE products SET product_description='$product_description' WHERE product_id='$product_id');

一切都很完美,数据库中的数据如下:

  

FIRST_LINE

     

SECOND_LINE

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我能够解决它。 mysqli_real_escape_string函数应用于通过表单提交的所有变量。删除此单个功能解决了这个问题。

如果有人遇到类似的问题,只需查看你的代码并删除mysqli_real_escape_string函数 - 它可以正常使用"标准"查询,但打破准备好的陈述。