Erreur mysql suite à détection doublons

Default
,

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éponse

53392
,

Salut,

try catch est ton amie ;)

a+

Pierre

40917
,

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.