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.
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP