如何在mysqli_real_escape_string和\ nl之间切换?
问题描述:
我一直在对mysqli_real_escape_string()进行一些阅读,并且在我的内容正确转义后,我在再次拔出时遇到了一些麻烦。如何在mysqli_real_escape_string和 nl之间切换?
这里是我的代码:
function update_section_content() {
$name = mysqli_real_escape_string($this->conn, $_POST['name']);
$text = mysqli_real_escape_string($this->conn, $_POST['content']);
// First, we do an update
$update_query = "UPDATE sections SET content = ? WHERE name = ?";
if($update_stmt = $this->conn->prepare($update_query)) {
$update_stmt->bind_param('ss', $text, $name);
$update_stmt->execute();
// If the update was successful, read in what we just updated
if($update_stmt->affected_rows == 1) {
$read_query = "SELECT content FROM sections WHERE name = ?";
if($read_stmt = $this->conn->prepare($read_query)) {
$read_stmt->bind_param('s', $name);
$read_stmt->execute();
$read_stmt->bind_result($content);
if($read_stmt->fetch()) {
echo nl2br($content);
}
}
}
$read_stmt->close();
$update_stmt->close();
}
我对下面的代码的希望是,它会更新记录和逃避任何坏字符,然后,在成功时,读取更新查询背部,同时保持其以前的视觉完整。 (也就是说,我希望textarea这个内容得到回显以显示换行符而不是br标签。)
不幸的是,截至目前,我仍然在转义后显示换行符。我错过了什么?
非常感谢您的时间,并提供任何意见非常感谢。
不幸的是,情况并非如此。我仍然收到换行符
答
由于您使用的是准备好的语句,因此您不应该也逃避字符串。
字符串转义是为了将值嵌入到SQL查询字符串本身中,但通过使用预处理语句,您完全可以避免这样做。
非常感谢,我没有意识到这一点! – 2009-08-08 21:41:12