Pregunta

He estado leyendo un poco en mysqli_real_escape_string () y, después de obtener mi contenido correctamente, escapo, tengo algunos problemas para mostrarlo correctamente cuando lo saqué nuevamente.

Aquí está el código que tengo:

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

Mi esperanza para el siguiente código era que actualizaría un registro y escaparía de cualquier personaje malo, y luego, al éxito, leería la consulta actualizada mientras mantiene su integridad visual anterior. (Es decir, me gustaría que texarea este contenido se haga eco para mostrar nuevas líneas y no etiquetas BR).

Desafortunadamente, a partir de ahora, sigo recibiendo personajes de Newline que se muestran después de escapar. ¿Qué me estoy perdiendo?

Muchas gracias por su tiempo, y se agradece mucho cualquier consejo proporcionado.

Desafortunadamente, ese no es el caso. Todavía obtengo personajes de Newline

¿Fue útil?

Solución

Como está utilizando declaraciones preparadas, no debe escapar de sus cuerdas.

El escape de la cadena es para cuando está incrustando los valores en la cadena de consulta SQL en sí, pero al usar declaraciones preparadas, está evitando con razón hacerlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top