Php mysqli准备语句删除新行
我一直在使用“标准”mysqli查询,但为了更安全,我决定使用预先准备好的语句。除了将数据添加到数据库时删除新行之外,其他一切都正常工作。以下是一些查询的示例:Php mysqli准备语句删除新行,php,mysql,mysqli,prepared-statement,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=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表单提交),它有新行。将数据添加到数据库时,其外观如下所示:
第一行\r\n第二行
我知道表单或代码本身没有问题,因为如果我使用此查询:
mysqli_query($GLOBALS['mysqli'], "UPDATE products SET product_description='$product_description' WHERE product_id='$product_id');
一切正常,数据库中的数据如下所示:
一线
第二线
有什么建议吗?我能解决它。mysqli_real_escape_string函数应用于通过表单提交的所有变量。删除此单一函数解决了问题
如果有人遇到类似问题,只需查看您的代码并删除mysqli_real_escape_string函数-它可以很好地处理“标准”查询,但是会破坏准备好的语句。当您使用
准备好的语句将数据存储在数据库中时,数据是什么样子的?是其他原因造成的,您没有向我们展示将变量分配给POST数组的部分,以及它如何准确地输入数据库where'smysqli\u real\u escape\u string()
在您的代码中?mysqli\u real\u escape\u string()
和准备好的函数是两种完全不同的动物。