Pergunta

Eu tenho lendo algumas leituras no mysqli_real_escape_string () e, depois de obter meu conteúdo corretamente escapou, estou tendo problemas para exibir corretamente quando o puxo novamente.

Aqui está o código que tenho:

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();
}

Minha esperança para o código a seguir foi que ele atualizaria um registro e escaparia de todos os caracteres ruins e, após o sucesso, lia a consulta atualizada, mantendo sua integridade visual anterior. (Ou seja, eu gostaria que, para o textarea, este conteúdo é ecoado para exibir linhas de novas e não tags BR.)

Infelizmente, a partir de agora, ainda estou recebendo personagens de nova linha mostrados após escapar. o que estou perdendo?

Muito obrigado pelo seu tempo, e qualquer conselho fornecido é muito apreciado.

Infelizmente, esse não é o caso. Eu ainda tenho personagens de nova linha

Foi útil?

Solução

Como você está usando declarações preparadas, você também não deve escapar de suas cordas.

A fuga de string é para quando você está incorporando os valores na própria sequência de consulta SQL, mas, usando declarações preparadas, você está evitando corretamente isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top