php - multiple - Actualizar consulta con PDO y MySQL
laravel select form (3)
Esto no tiene nada que ver con el uso de PDO, es solo que está confundiendo INSERTAR y ACTUALIZAR.
Aquí está la diferencia:
-
INSERT
crea una nueva fila. Supongo que realmente quieres crear una nueva fila. -
UPDATE
cambia los valores en una fila existente, pero si esto es lo que estás haciendo, probablemente deberías usar una cláusula WHERE para restringir el cambio a una fila específica, porque el valor predeterminado es que se aplica a cada fila.
Entonces esto probablemente hará lo que quieras:
$sql = "INSERT INTO `access_users`
(`contact_first_name`,`contact_surname`,`contact_email`,`telephone`)
VALUES (:firstname, :surname, :email, :telephone);
";
Tenga en cuenta que también he cambiado el orden de las columnas; el orden de sus columnas debe coincidir con el orden de los valores en su cláusula VALUES.
MySQL también admite una sintaxis alternativa para INSERT:
$sql = "INSERT INTO `access_users`
SET `contact_first_name` = :firstname,
`contact_surname` = :surname,
`contact_email` = :email,
`telephone` = :telephone
";
Esta sintaxis alternativa se parece un poco más a una instrucción UPDATE, pero crea una nueva fila como INSERT. La ventaja es que es más fácil hacer coincidir las columnas con los parámetros correctos.
Intento escribir una consulta de actualización solo con PDO. ¿No puedo ejecutar mi código?
try {
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE `access_users`
(`contact_first_name`,`contact_surname`,`contact_email`,`telephone`)
VALUES (:firstname, :surname, :telephone, :email);
";
$statement = $conn->prepare($sql);
$statement->bindValue(":firstname", $firstname);
$statement->bindValue(":surname", $surname);
$statement->bindValue(":telephone", $telephone);
$statement->bindValue(":email", $email);
$count = $statement->execute();
$conn = null; // Disconnect
}
catch(PDOException $e) {
echo $e->getMessage();
}
Su sintaxis de actualización es incorrecta. Verifique la sintaxis de actualización para la sintaxis correcta.
$sql = "UPDATE `access_users` set `contact_first_name` = :firstname, `contact_surname` = :surname, `contact_email` = :email, `telephone` = :telephone";
- Tu sintaxis de
UPDATE
es incorrecta - Probablemente quisiste actualizar una fila, no todas, así que tienes que usar la cláusula
WHERE
para apuntar a tu fila específica
Cambio
UPDATE `access_users`
(`contact_first_name`,`contact_surname`,`contact_email`,`telephone`)
VALUES (:firstname, :surname, :telephone, :email)
a
UPDATE `access_users`
SET `contact_first_name` = :firstname,
`contact_surname` = :surname,
`contact_email` = :email,
`telephone` = :telephone
WHERE `user_id` = :user_id -- you probably have some sort of id