输出换行而不是\ r \ n

时间:2013-06-11 13:45:52

标签: php

我正在使用此方法将数据存储在数据库中:

$content = $_POST['content'];
$content = mysqli_real_escape_string($mysqli,$content);

$stmt = $mysqli->prepare("INSERT INTO na_posts(postuid,content) VALUES (?, ?)");
$stmt->bind_param("ss",$post_id,$content);
$stmt->execute();
$stmt->close();

我使用此代码从数据库中获取数据:

$sql = "SELECT * FROM na_posts WHERE postuid = '" . $id . "'";
$stmt = $mysqli->query($sql);
$row = $stmt->fetch_Object();
echo nl2br($row->content);

但输出如下:

嘿这是第一行\ r \ n这是第二行

为什么新行显示为\r\n

如果我删除对mysqli_real_escape_string()的调用,这对我的阅读安全很重要。

1 个答案:

答案 0 :(得分:7)

如果您使用绑定参数,则不需要

mysqli_real_escape_string,因为您使用的是bind_param。它是一个或另一个,你不需要两者。由于各种原因,绑定参数更好,主要是它更容易构建SQL,数据库也可以更高效(因为即使绑定值不同,它也可以更有效地执行相同的查询两次)。

为了输出值,在HTML中你应该使用Alamri提到的htmlspecialchars之类的东西。大多数体面的模板引擎都允许你默认转义值,这样你就不必每次都记得逃避。例如,Symfony将在其模板中默认转义值(其他PHP Web框架可用)。