Mise à jour de la requête avec PDO et MySQL
Im essayant d'écrire une requête de mise à jour avec PDO seulement je ne peux pas obtenir mon code à exécuter?
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();
}
- La requête est erronée. Vous êtes à l'aide de l'INSÉRER comme syntaxe. Jetez un oeil à la syntaxe de mise à jour ici: dev.mysql.com/doc/refman/5.0/en/update.html
Vous devez vous connecter pour publier un commentaire.
UPDATE
syntaxe est mauvaiseWHERE
clause de cibler votre ligne spécifiqueChangement
à
UPDATE `access_users` SET `contact_first_name` = :firstname, `contact_surname` = :surname, `contact_email` = :email, `telephone` = :telephone WHERE `user_name` = :user_name
nom d'utilisateur de la session deCela n'a rien à voir avec l'utilisation de PDO, c'est juste que vous êtes à confusion, d'INSERTION et de mise à JOUR.
Voici la différence:
INSERT
crée une nouvelle ligne. Je suppose que vous voulez vraiment créer une nouvelle ligne.UPDATE
change les valeurs dans une ligne existante, mais si c'est ce que vous faites, vous devriez probablement utiliser une clause where pour limiter le changement à une ligne spécifique, car la valeur par défaut est qu'il s'applique à chaque ligne.Ce sera probablement faire ce que vous voulez:
Noter que j'ai également changé l'ordre des colonnes; l'ordre des colonnes doit correspondre à l'ordre des valeurs dans les VALEURS de la clause.
MySQL supporte aussi une syntaxe alternative pour INSÉRER:
Cette alternative syntaxe ressemble un peu plus comme une instruction de mise à JOUR, mais il crée une nouvelle ligne comme INSERT. L'avantage est qu'il est plus facile de faire correspondre les colonnes pour les paramètres corrects.
Votre mise à jour de la syntaxe est incorrecte. Veuillez vérifier Mise À Jour De Syntaxe de la syntaxe correcte.