Partage
  • Partager sur Facebook
  • Partager sur Twitter

Difficulté de liaison base de donnée MySQL et PHP

Sujet résolu
    20 septembre 2021 à 14:00:38

    Bonjour à tous !

    J'ai un problème de liaison entre ma base de donnée mySQL et mon script PHP. Lorsqu'un utilisateur s'inscrit sur mon formulaire d'inscription, il est inscrit sur la âge web qu'il s'est bien inscrit et il reçoit ainsi un mail de confirmation. Or, son inscription n'est as enregistrée dans Mysql. 

    J'ai donc affiché les erreurs et voici ce que ça m'indique : 

    Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'confirme' doesn't have a default value in C:\MAMP\htdocs\Sprint\Sprint\Formulaire d'inscription.php:28 Stack trace: #0 C:\MAMP\htdocs\Sprint\Sprint\Formulaire d'inscription.php(28): PDOStatement->execute(Array) #1 {main} thrown in C:\MAMP\htdocs\Sprint\Sprint\Formulaire d'inscription.php on line 28


    Mon code est :


    if(isset($_POST['forminscription'])) {
       $pseudo = htmlspecialchars($_POST['pseudo']);
       $mail = htmlspecialchars($_POST['mail']);
       $mail2 = htmlspecialchars($_POST['mail2']);
       $mdp = sha1($_POST['mdp']);
       $mdp2 = sha1($_POST['mdp2']);
       if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
          $pseudolength = strlen($pseudo);
          if($pseudolength <= 255) {
             if($mail == $mail2) {
                if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
                   $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                   $reqmail->execute(array($mail));
                   $mailexist = $reqmail->rowCount();
                   if($mailexist == 0) {
                      if($mdp == $mdp2) {
                         $longueurKey = 15;
                         $key = "";
                         for($i=1;$i<$longueurKey;$i++) {
                            $key .= mt_rand(0,9);
                         }
                         $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, confirmkey) VALUES(?, ?, ?, ?)");
     
                         $insertmbr->execute(array($pseudo, $mail, $mdp, $key));



    Il y a donc un problème à l'avant dernière ligne ainsi qu'à la dernière mais je ne trouve pas quoi... 


    Merci pour votre aide :)


    -
    Edité par SchadeiJP 20 septembre 2021 à 14:29:06

    • Partager sur Facebook
    • Partager sur Twitter
      20 septembre 2021 à 14:09:47

      Bonjour, Évitez les titres de sujet avec "problème", si vous postez on se doute que vous avez un problème inutile de l'indiquer dans le titre du sujet cela n'apporte aucune information quant au contenu de celui-ci.

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Liens conseillés

      -
      Edité par AbcAbc6 20 septembre 2021 à 14:27:48

      • Partager sur Facebook
      • Partager sur Twitter
        20 septembre 2021 à 15:57:48

        > Field 'confirme' doesn't have a default value

        Le message d'erreur te dit que ta colonne confirme n'a pas de valeur par défaut donc tu dois la faire figurer dans ton INSERT et lui donner explicitement une valeur. Sinon, tu lui mets une valeur par défaut.

        Encore et toujours du htmlspecialchars mal utilisé et sha1, ça ne vaut plus rien : pourquoi ne pas utiliser les fonctions spécialisées password_* ? Elles sont faites pour ça !

        -
        Edité par julp 20 septembre 2021 à 16:00:27

        • Partager sur Facebook
        • Partager sur Twitter
          20 septembre 2021 à 16:32:45

          Problème résolu ! Merci beaucoup :)
          • Partager sur Facebook
          • Partager sur Twitter
            20 septembre 2021 à 16:48:05

            SchadeiJP a écrit:

            Problème résolu ! Merci beaucoup :)

            Bonjour,

            Sujet résolu

            Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)

            • Partager sur Facebook
            • Partager sur Twitter

            Difficulté de liaison base de donnée MySQL et PHP

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown