Php 输出新行而不是\r\n

Php 输出新行而不是\r\n,php,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->exec

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

$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);
我使用以下代码从数据库中获取数据:

$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\u real\u escape\u string()
的调用,它就会起作用。正如我所读到的,这对安全性很重要。

mysqli\u real\u escape\u string
如果您使用绑定参数,则不需要它,就像您使用
bind\u param
一样。这是一个或另一个,你不需要两者兼而有之。由于各种原因,绑定参数更好,主要是因为它更容易构建SQL,而且数据库也可以更高效(因为即使绑定值不同,它也可以更高效地执行同一查询两次)


要输出值,在HTML中应该使用类似Alamri提到的
htmlspecialchars
的内容。大多数优秀的模板引擎都允许您在默认情况下转义值,这样您就不必每次都记得转义。例如,默认情况下,将转义其模板中的值(其他PHP web框架可用)。

您的双转义
$content
使用
mysqli\u real\u escape\u string()
bind\u param()
这与根本不转义相同,非常感谢您。。。我使用的输出方法是安全的吗?@Alamri您应该通过
htmlspecialchars()
运行输出以防止XSS:
echo nl2br(htmlspecialchars($row->content))
@MrCode谢谢,这都是关于XSS的,我以前遇到过,现在我必须更加小心,非常感谢..同意MrCode(假设你输出的是HTML页面)-如果你要做任何数量的HTML输出,最好使用默认情况下可以逃逸的模板引擎,这样就不需要太多努力来保持保护。