我正在使用此方法将数据存储在数据库中:
$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();
Run Code Online (Sandbox Code Playgroud)
我使用此代码从数据库中获取数据:
$sql = "SELECT * FROM na_posts WHERE postuid = '" . $id . "'";
$stmt = $mysqli->query($sql);
$row = $stmt->fetch_Object();
echo nl2br($row->content);
Run Code Online (Sandbox Code Playgroud)
但输出是这样的:
嘿这是第一行\ r \n这是第二行
为什么新线条会像这样出现\r\n?
如果我删除了对mysqli_real_escape_string()我看过的安全性很重要的调用,它就可以工作.
mysqli_real_escape_string如果您正在使用绑定参数,则不需要bind_param.它是一个或另一个,你不需要两者.由于各种原因,绑定参数更好,主要是它更容易构建SQL并且数据库也可以更高效(因为即使绑定值变化,它也可以更有效地执行相同的查询两次).
要输出值,请在HTML中使用htmlspecialcharsAlamri提到的内容.大多数体面的模板引擎都允许你默认转义值,这样你就不必每次都记得逃避.例如,Symfony将在其模板中默认转义值(其他PHP Web框架可用).
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |