Как я могу чередовать mysqli_real_escape_string и \ nl? - PullRequest
0 голосов
/ 09 августа 2009

Я читаю 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();
}

Я надеялся, что следующий код обновит запись и удалит все недопустимые символы, а затем, в случае успеха, прочитает обновленный запрос обратно, сохранив прежнюю визуальную целостность. (То есть я хотел бы, чтобы текстовая область отображалась в этом контенте для отображения новых строк, а не тегов br.)

К сожалению, на данный момент я все еще получаю символы новой строки после побега. Чего мне не хватает?

Большое спасибо за ваше время, и любые советы, предоставленные с благодарностью.

К сожалению, это не так. Я все еще получаю символы новой строки

1 Ответ

2 голосов
/ 09 августа 2009

Поскольку вы используете подготовленные операторы, вам также не следует избегать строк.

Экранирование строки предназначено для случаев, когда вы встраиваете значения в саму строку запроса SQL, но, используя подготовленные операторы, вы совершенно справедливо избегаете этого.

...