SQLSTATE[23000]: Integrity constraint violation

Par Ekim Kael, il y a 9 ans


Bonjour,
je rencontre un souci avec mon code
j'ai cette erreur
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0-0' for key 'phone' in C:\wamp\www\losthing\admin\start.php on line 36
la ligne de requete SQL en fait

require 'inc/header.php'; require_once 'inc/func.php'; if (isset($_POST)) { $errors = []; require_once 'inc/db.php'; if(empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_-]+$/', $_POST['username'])){ $errors['username'] = "Votre pseudo n'est pas valide (alphanumérique)"; } if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ $errors['email'] = "Votre adresse email n'est pas invalide"; }else{ $req = $db->prepare("SELECT * FROM users WHERE email = ?"); $req->execute([$_POST['email']]); $user = $req->fetch(); if($user){ $errors['email'] = "Adresse email déjà utilisée"; } } if(empty($_POST['password']) || $_POST['password'] != $_POST['confirm_password']){ $errors['password'] = "Vous devez rentrer un mot de passe valide"; } if($errors == []){ $req = $db->prepare("INSERT INTO users SET username = ?, email = ?, password = ?, confirmed_at = NOW()"); $password = password_hash($_POST['password'], PASSWORD_BCRYPT); $req->execute([$_POST['username'],$_POST['email'],$password]); $user_id = $db->lastInsertId(); $username = $_POST['username']; mail($_POST['email'],"CONFIGURATION DE VOTRE NOUVEAU SITE","Vous venez de mettre sur pied votre site internet : LOSTHING\n\nVous pouvez vous y connecter en tant qu’administrateur avec les informations suivantes :\n\nIdentifiant : $username\n\nMot de passe : Ceci vous avez ecrit\n\nAcceder dès à présent à votre espace d'administration en allant sur le lien present : http://localhost/losthing/admin/login.php"); $_SESSION['flash']['success'] = "Vos pouvez commencer à configurer correctement votre site"; header('Location:login.php'); } } ?>

Please help me please.

4 réponses

TransientDev, il y a 9 ans

Bonjour,

Comme je ne vois pas de 'phone' dans ton insert-to, j'en conclu qu'il a une valeur par default en base. Comme c'est un numéro de tel, je suppose que tu a mis qu'il devait être unique? Du coup ça vient peut-être de la.

Cordialement,
TD

Ekim Kael, il y a 9 ans

Oui il doit etre UNIQUE effectivement.
et selon toi que devrais-je faire? STP

Carouge10, il y a 9 ans

Soit vous rentrez le numéro de téléphone avec l'insert, soit vous faite comme pour l'adresse mail en testant si elle existe dans la base.

TransientDev, il y a 9 ans

Si tu enleve la valeur par default du numéro de telephone et que tu laisse null à la place le problème ne devrait plus se présenter. A part si tu as une raison particulière de mettre '0-0' et la je ne sais pas comment contourner le problème.