Nueva pregunta

Pregunta:

Fecha: 15-12-2019 14:07:56 (En Español)

Problemas para actualizar un registro en la base de datos[Resuelta]

Hola amigos de la comunidad.
Resulta que estoy ensayando con un proyecto local y tengo un problema para actualizar un campo en mi base de datos, ya he hecho un var_dump() del dato que necesito y los datos me llegan correctamente, pero resulta que tengo un error y tal parece que es en la consulta pero no logro entender cual es ese error.

Aqui les voy a dejar el codigo PHP para que revisen mi consulta tambien les estare dejando el codigo de html para si tienen que hacer alguna prueba.

Codigo PHP
<?php

require_once 'conexion.php';

$email = $_SESSION['email'];

// declarar las variables de error o exito
$errors = '';
$success = '';

// tomar todos los datos que nos llegan por post
if(isset($_POST['edit'])){
    $message = $_POST['message'];

    // Validar que el dato no este vacio
    if(empty($message)){
        $errors .= '* Tu biografia no puede estar vacia';
    }

    // Limpar datos
    $message = htmlspecialchars($message);
    $message = trim($message);

    $message = filter_var($message, FILTER_SANITIZE_STRING);

    var_dump($message);

    // actualizar el dato en la base de datos
    if(empty($errors)){
        $statement = $conexion->prepare("UPDATE users SET message = $message WHERE email = $email");
        $success .= "Tu biografia se ha actualizado correctamente";
        // header("Refresh:3; url=index.php");
}

}

?>


Codigo html

<?php session_start();

// Comprobar si el usuario ha inciado sesion
if(empty($_SESSION['email'])){
    header('Location: index.php');
}

require_once 'backend/edit.php';

$email = $_SESSION['email'];

// Sacar el nombre de la persona que ha iniciado sesion
$stmt = $conexion->query("SELECT * FROM users WHERE email = '$email'");
$stmt->execute(['email' => $email]);
while ($row = $stmt->fetch()) {
    $name = $row['name'];
    $surname = $row['surname'];
    $message = $row['message'];
}

?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Blog Master | Edita tu biografia</title>
    <!-- Favicon -->
    <link rel="shortcut icon" href="img/favicon.png" type="image/x-icon">
    <!-- Estilos CSS -->
    <link rel="stylesheet" href="css/style.css">
    <!-- Google Fonts -->
    <link href="https://fonts.googleapis.com/css?family=Livvic&display=swap" rel="stylesheet">
</head>
<body>

<!-- Header de la pagina -->
<?php require 'header.php'; ?>

<main>
    <section id="contenedor">
    <a href="cerrar.php" class="salir">Cerrar Sesion</a>
        <article>
            <h3>Describe tus gustos o algo más...</h3>
            <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST">
                <textarea name="message" id="formEdit" placeholder="<?php echo $name; ?>, edita tu biografia">
                    <?php echo $message; ?>
                </textarea>
                <button class="login" name="edit" type="submit">Editar</button>
            </form>
        </article>
    </section>
</main>

<!-- Footer de la pagina -->
<?php require 'footer.php'; ?>
    
</body>
</html>


Ojala logre resolver este problema, un codiar saludo
Etiquetas: PHP - SQL Votos: 0 - Respuestas: 1 - Vistas: 8 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 15-12-2019 14:38:27 Ya lo he solucionado, el problema estaba en el requerimiento de mi funcion que contiene la conexion a la base de datos y no le estaba poniendo los puntos a las variables en la sentencia sql.

    De todas maneras aqui dejo el codigo PHP ya resuelto:
    <?php
    
    require_once './conexion.php';
    
    $email = $_SESSION['email'];
    
    // declarar las variables de error o exito
    $errors = '';
    $success = '';
    
    // tomar todos los datos que nos llegan por post
    if(isset($_POST['edit'])){
        $message = $_POST['message'];
    
        // Validar que el dato no este vacio
        if(empty($message)){
            $errors .= '* Tu biografia no puede estar vacia';
        }
    
        // Limpar datos
        $message = htmlspecialchars($message);
        $message = trim($message);
    
        $message = filter_var($message, FILTER_SANITIZE_STRING);
    
        // actualizar el dato en la base de datos
        if(empty($errors)){
            $statement = $conexion->prepare("UPDATE users SET message = '$message' WHERE email = '$email'");
            $statement->execute(array(
                ':message' => $message,
                ':email' => $email
            ));
            $success .= "Tu biografia se ha actualizado correctamente";
            header("Refresh:3; url=index.php");
    }
    
    }
    
    ?>
      Votos: -1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com