Как я могу чередовать 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, показанные после побега. Что мне не хватает?
Большое спасибо за ваше время, и любой предоставленный совет очень ценится.
К сожалению, это не так. Я все еще получаю персонажей Newline
Решение
Поскольку вы используете подготовленные заявления, вы также не должны избегать своих строк.
Строка строки - это когда вы внедряете значения в саму строку запроса SQL, но, используя подготовленные операторы, вы вполне справедливо избегаете этого.