Erreur mysql suite à détection doublons

Par Dadoo Ronron, il y a 6 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

/************ Add user to database ***************/ public function addUserToDb($user) { $requete = $this->connection->prepare(' INSERT INTO users (id,nom,prenom,email,role,statut,token,login,password) VALUES (:id,:nom,:prenom,:email,:role,:statut,:token,:login,:password) '); $requete->bindValue(':id', NULL, \PDO::PARAM_INT); $requete->bindValue(':nom', $user->getNom(), \PDO::PARAM_STR); $requete->bindValue(':prenom', $user->getPrenom(), \PDO::PARAM_STR); $requete->bindValue(':email', $user->getEmail(), \PDO::PARAM_STR); $requete->bindValue(':role', $user->getRole(), \PDO::PARAM_STR); $requete->bindValue(':statut', 0, \PDO::PARAM_INT); $requete->bindValue(':token', $user->getToken(), \PDO::PARAM_STR); $requete->bindValue(':login', $user->getLogin(), \PDO::PARAM_STR); $requete->bindValue(':password', $this->hashPassword($user->getPassword()), \PDO::PARAM_STR); $affectedLines = $requete->execute(); $count = $requete->rowCount(); echo '<pre>'; var_dump($count); return $affectedLines;

Ce que je veux

J'aimerais détecter et traiter par un message le cas ou l'utilisateur entre un login ou email déjà existant

Ce que j'obtiens

Erreur niveau Router :SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'kreso' for key 'login'

2 réponses

Pierrot01, il y a 6 ans

Salut,

try catch est ton amie ;)

a+

Pierre

Carouge10, il y a 6 ans

Bonjour,
Avant de faire de l'ajout, il faut faire une requête qui recherche dans la bdd sible pseudo ou l'émail est déjà dans la base.
ensuite tu avises suivant le résultat.