TransWikia.com

Como se puede añadir el id de phpmyadmin del usuario de la sesión abierta en el UPDATE para actualizar los datos del user en pdo

Stack Overflow en español Asked by Jack More on November 4, 2021

esta pregunta parte del problema planteado en [1]: Como utilizar bien el id de la session_start a para utilizarlo en el UPDATE de una base de datos

El proceso es el siguiente, la base de datos que tengo en phpmyadmin cada vez que se crea un usuario se creo un fila, con el contenido que el inserta, pero en el proceso se crea un id (AUTO_INCREMENT), la razón por el id es por si el usuario quiere hacer algún cambio a sus datos almacenados, se tendrán que diferenciar uno de los otros gracias al id.
Entonces el problema llega a la hora del UPDATE. Los datos que son necesarios para el update son dados por un formulario que el mismo usuario rellena, menos el id, que eso no se puede cambiar ya que marca donde hay que hacer los cambios. La sesión del usuario es abierta mediante session_start().

Formulario

<?php
 session_start();
 
 
 ?>
 <html>
 <head>
<title>Actualizar Libro</title>
<h1 class="username"><?php echo $_SESSION['Name']; ?></h1>

     
 
 </head>
 <body>
 
     <form action='actualizardos.php' method='post'>
     <table>
         <tr>
         
         
             <td>Autor:</td>
             <td><input type='text' name='social1' pattern=[A-Zsa-z]{3,20} ></td>
         </tr>
         <tr>
             <td>Fecha Edición:</td>
             <td><input type='text' name='social2' pattern=[A-Zsa-z]{3,20}></td>
         </tr>
         <tr>
         <td>Fecha Edición:</td>
             <td><input type='text' name='aboutt' pattern=[A-Zsa-z]{3,20}></td>

              
</tr>

</table>
<input type='submit' name='actualizar' >

 </form>
 </body>
 </html>

Archivo con el pdo que hace la actualización

<?php
session_start();
$dbhost = "localhost";     // localhost or IP
$dbuser = "root";         // database username
$dbpass = "";            // database password
$dbname = "phplogin";    // database name



try{    
  $conn = new PDO("mysql:host=$dbhost; dbname=$dbname", $dbuser, $dbpass);
  $conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $conn->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
 $pdo = "UPDATE users  
 SET social1 = :social1,
     social2 = :social2,
     aboutt = :aboutt
     
WHERE id= :id";               



 $statement = $conn->prepare($pdo);
 $statement->bindParam(":social1", $social1);
 $statement->bindParam(":social2", $social2);
 $statement->bindParam(":aboutt", $aboutt);
 $statement->bindParam(":id", $id);
 $count = $statement->execute();

  
 echo $statement->rowCount() . " records UPDATED successfully";
}catch(PDOException $e) {
  echo $e->getMessage();
}
   
   $conn = null;        // Disconnect
?>

Entonces ahora el error mostrado actualmente es:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE 'id'= ?' 

Yo creo que el error es dado porque el código no tiene idea de en que id hay que insertar los datos que vienen del formulario. Hi ha ahí desconozco y es el origen de mi pregunta si hay que vincular o algo la session_start(que muestra que sesión esta abierta) y el id que hay en phpmyadmin.
Creo que esta pregunta tiene valor en cuanto ha sesiones y pdo en el entorno del usuario, ya que esta pregunta es formulada de maneras diferentes en bastantes sitios. Gracias de antemano.

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