Décrivez ici votre problème ou ce que vous cherchez à faire.
Je cherche à créer un compte pour un utilisateur mais j'arrive pas et le code me retoune pas une erreur mais juste le message que je ecris si le compte ne pas creer voici ma table SQL et ma méthode pour ajouter un utilisateur si vous pouvez m'aider s'il vous plait.

DROP TABLE IF EXISTS `UTILISATEUR`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `UTILISATEUR` (
  `uti_id` int(17) NOT NULL AUTO_INCREMENT,
  `uti_nom` varchar(25) DEFAULT NULL,
  `uti_prenom` varchar(25) DEFAULT NULL,
  `uti_email` varchar(255) DEFAULT NULL,
  `uti_mot_passe` varchar(80) DEFAULT NULL,
  `uti_ville` varchar(40) DEFAULT NULL,
  `uti_codePostal` int(33) DEFAULT NULL,
  `uti_civilite` varchar(33)
  PRIMARY KEY (`uti_id`),
  UNIQUE KEY `UC_EMAIL` (`uti_email`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4;

public function addToDBase(Utilisateur $a) {
            $req = 'INSERT INTO UTILISATEUR (uti_nom, uti_prenom, uti_status, uti_email, uti_mot_passe, uti_ville, util_cp, uti_civilite) VALUES (?,?,?,?,?,?,?,?)';
            $stmt = $this->pdo->prepare($req)->execute([$a->getNom(),$a->getPrenom(), $a->getStatus(), $a->getEmail(),$a->getMotDePasse(),$a->getVille(),$a->getCodePostal(),$a->getCivilite()]);
            return $stmt;
        }

Ce que je veux
Je souhaite ajouter un utilisateur dans la base des données c'est à dire créer un compte utilisateur.

Ce que j'obtiens

Et ce ma premiere fois d'utiliser le forum si jamais j'ai pas bien respecter toutes les consignes désolé et toutes mes excuses.

1 réponse


Bonjour,

Il manque une virgule après "uti_civilite varchar(33)" dans la création de table.
Dans votre fonction addToDBase, dans votre requette vous indiquez un champs "uti_status" qui n'existe pas dans la table utilisateur

soit vous rajoutez un champs uti_status dans votre requette de création de table soit vous le supprimez dans la requette d'ajout
$req = 'INSERT INTO UTILISATEUR (uti_nom, uti_prenom, uti_email, uti_mot_passe, uti_ville, util_cp, uti_civilite) VALUES (?,?,?,?,?,?,?,?)';
$stmt = $this->pdo->prepare($req)->execute([$a->getNom(),$a->getPrenom(), $a->getEmail(),$a->getMotDePasse(),$a->getVille(),$a->getCodePostal(),$a->getCivilite()]);

A vérifier, cordialement

Hola !
Pour rajouter à la réponse de cattleyas10, il y a aussi un souci avec ton champs "code postal" : il s'apelle uti_codePostal dans ta bdd et util_cp dans ta requète ..

Bonjour.
Tu devrais éviter d'écrire le nom de la table tout en majuscule.
Puis pour plus de logique, mets son nom au pluriel, car la table contient plusieurs lignes et donc plusieurs utilisateurs.
Sinon, j'espère que tu encrypte bien les mots de passe en base de données.
Au passage pour que tu aies des erreurs de retourné lorsque c'est le cas, il te faut penser à activer les erreurs lorsque tu initialises la connexion à la base de données via PDO.