TransWikia.com

como puedo lograr actualizar los datos de mi bd con un UPDATE

Stack Overflow en español Asked on December 7, 2021

estoy teniendo un problema, intento hacer el update a mi bd pero aunque haga click y me aparezca sin errores sigue mostrando los mismos datos que tenia anteriormente. mi llave primaria es cedula y los otros campos son nombre, apellido, direccion, telefono. la tabla se llama administracion. como logro que el update cumpla la funcion y termine actualizando todos los datos que le ingreso en los campos de los formulario??.

cualquier consejo que me hagan aparte de la pregunta sera bienvenido.
espero me puedan ayudar amigos, espero sus respuestas 🙂

<?php
    
    $servidor="localhost";
        $usuario="root";
        $password="17122001";
        $db="sistema";

        $conexion= new mysqli($servidor,$usuario,$password,$db);

        if ($conexion->connect_error) {
            die("conexion fallida" . $conexion->connect_error);
        }
    $cedula=$_GET['cedula'];
    
    $sql="SELECT * FROM administracion where cedula = $cedula";
    $resultado=$conexion->query($sql);
    while($row= $resultado->fetch_assoc()){
        $nombre = $row['nombre'];
        $apellido =  $row['apellido'];
        $direccion = $row['direccion'];
        $telefono = $row['telefono'];
    }
    

?>

<div class="formulario-registro">
        
        <form action="administracion.php" method="POST">
            
            <label for="nombre">Nombre</label>
            <input type='text' name="nombre" value="<?php echo $nombre ?>" size="25" maxlength="20" minlength="3" required>

            <br />

            <label for="apellido">Apellido</label>
            <input type='text' name="apellido" value="<?php echo $apellido ?>" size="25" maxlength="20" minlength="3" required>

            <br />

            <label for="cedula">Cedula</label>
            <input type='text' name="cedula" value="<?php echo $cedula ?>" size="25" maxlength="12" minlength="3" required>

            <br />

            <label for="direccion">Direccion</label>
            <input type='text' name="direccion" value="<?php echo $direccion ?>" size="25" maxlength="35" minlength="3" >

            <br />

            <label for="telefono">Telefono</label>
            <input type='text' name="telefono" value="<?php echo $telefono ?>" size="25" maxlength="12" minlength="3" >

            <br />
            <br />

            <label for="cargo">Cargo</label>
            <select name="cargo[]">
                  <option value="administracion"> Administracion </option>
                  <option value="docente"> Docente </option>
                  <option value="limpieza"> Limpieza </option>
                  <option value="vigilante"> Vigilante </option>
            </select>

            <br />

             <input class="boton-registro" type="submit" name="registrar" placeholder="Registrar" value="Registrar" required>

        </form>
        </div>
<?php
                $nombre2=$_POST["nombre"];
                $apellido2=$_POST["apellido"];
                $cedula2=$_POST["cedula"];
                $direccion2=$_POST["direccion"];
                $telefono2=$_POST["telefono"];
                $cargo2=$_POST["cargo"];

                $sql="UPDATE administracion SET cedula='$cedula2', nombre='$nombre2', apellido='$apellido2', direccion='$direccion2', telefono='$telefono2', cargo='$cargo2' WHERE cedula='$cedula'";

                if($conexion->query($sql) === true){
                }
                else{
                    die("ERROR: " . $conexion->error);
                }
                $conexion->close();
?>

One Answer

Diego, pude notar una diferencia en la clausula WHERE del SELECT en comparación con la del UPDATE y tal vez esa sea la causa.

En el select pasas la cédula como número

$sql="SELECT ... WHERE cedula = $cedula";

Pero en el update está como string

$sql="UPDATE ... WHERE cedula = '$cedula'";

Adicionalmente te comento que me causa preocupación la forma como estás construyendo las instrucciones SQL. Considera parametrizarlas porque como están, dejan todas las puertas abiertas a lo que se conoce como inyección sql. Esta referencia te puede dar más información al respecto.

Actualización

El otro error que me notificaste en los comentarios, es porque en el UPDATE, también estás tratando la cédula como un string y evidentemente es un número.

//   Asegurate que no esté entre comillas  |
//                                         V
$sql="UPDATE administracion SET cedula = $cedula2, ...

En general, cuando construyes instrucciones SQL los campos que son numéricos no van entre comillas ' '

Answered by Pablo Gutiérrez on December 7, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP