mysqli_real_escape_stringと nlを交互にするにはどうすればよいですか?
-
12-09-2019 - |
質問
私はmysqli_real_escape_string()でいくつかの読書をしてきましたが、コンテンツを適切に逃げた後、再び引き出すと適切に表示されるのに苦労しています。
これが私が持っているコードです:
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タグではなく新しいラインを表示するためにエコーされたいと思います。)
残念ながら、今のところ、私はまだ逃げた後にニューラインのキャラクターを見せています。何が足りないの?
お時間をいただきありがとうございます。提供されているアドバイスは大歓迎です。
残念ながら、そうではありません。私はまだNewlineキャラクターを取得します
解決
準備されたステートメントを使用しているため、文字列も逃げてはいけません。
文字列の脱出は、SQLクエリ文字列自体に値を埋め込む場合のためですが、準備されたステートメントを使用することで、それを行うことを非常に避けています。
所属していません StackOverflow