Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysqli准备语句删除新行_Php_Mysql_Mysqli_Prepared Statement - Fatal编程技术网

Php 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

我一直在使用“标准”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表单提交),它有新行。将数据添加到数据库时,其外观如下所示:

第一行\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's
mysqli\u real\u escape\u string()
在您的代码中?
mysqli\u real\u escape\u string()
和准备好的函数是两种完全不同的动物。