Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête préparée INSERT - DPO

Problème : La requête ne s'exécute pas.

Sujet résolu
    19 octobre 2018 à 12:16:59


    Bonjour,
    Je me lance dans les requêtes préparées  pour récupérer les POST du formulaire de saisi. 
    Aucun problème pour la connexion à la base de données.
    <?php
    
    // PREPARATION REQUETE ------------------------------
    $req_sortie = $bdd_SAE->prepare('INSERT INTO calendriers (date_debut,date_fin,RDV,horaire,lieu,google_maps,ID_activite,epreuve,type,ID_adherent,informations,inscriptions,Adultes,Familles,Ecole_Aventure,Jeunes_Chirens,date_limite,nb_place,niveau_requis,frais,logement,image_pub,lien_pub) VALUES(:date_debut,:date_fin,:RDV,:horaire,:lieu,:google_maps,:ID_activite,:epreuve,:type,:ID_adherent,:informations,:inscriptions,:Adultes,:Familles,:Ecole_Aventure,:Jeunes_Chirens,:date_limite,:nb_place,:niveau_requis,:frais,:logement,:image_pub,:lien_pub)');
    
    // On lie les variables définie au-dessus au paramètres de la requête préparée
    $req_sortie->bindValue(':date_debut',      $_POST['date_debut'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':date_fin',        $_POST['date_fin'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':RDV',             $_POST['RDV'], PDO::PARAM_STR);
    $req_sortie->bindValue(':horaire',         $_POST['horaire'], PDO::PARAM_STR);
    $req_sortie->bindValue(':lieu',            $_POST['lieu'], PDO::PARAM_STR);
    
    $req_sortie->bindValue(':google_maps',     $_POST['google_maps'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':ID_activite',     $_POST['ID_activite'], PDO::PARAM_STR);
    $req_sortie->bindValue(':epreuve',         $_POST['epreuve'], PDO::PARAM_STR);
    $req_sortie->bindValue(':type',            $_POST['type'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':ID_adherent',     $_POST['ID_adherent'], PDO::PARAM_STR); 
    
    $req_sortie->bindValue(':informations',    $_POST['informations'], PDO::PARAM_STR);
    $req_sortie->bindValue(':inscriptions',    $_POST['inscriptions'], PDO::PARAM_STR);
    $req_sortie->bindValue(':Adultes',         $_POST['Adultes'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':Familles',        $_POST['Familles'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':Ecole_Aventure',  $_POST['Ecole_Aventure'], PDO::PARAM_STR);
    
    $req_sortie->bindValue(':Jeunes_Chirens',  $_POST['Jeunes_Chirens'], PDO::PARAM_STR);
    $req_sortie->bindValue(':date_limite',     $_POST['date_limite'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':nb_place',        $_POST['nb_place'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':niveau_requis',   $_POST['niveau_requis'], PDO::PARAM_STR);
    $req_sortie->bindValue(':frais',           $_POST['frais'], PDO::PARAM_STR);
    
    $req_sortie->bindValue(':logement',        $_POST['logement'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':image_pub',       $_POST['image_pub'], PDO::PARAM_STR);  
    $req_sortie->bindValue(':lien_pub',        $_POST['lien_pub'], PDO::PARAM_STR);
    
    //On exécute la requête
    $req_sortie->execute();
    ?>
    

    Problème : La requête ne s'exécute pas. 
    Testé avec :
    // On récupère le résultat
            if ($req_sortie->fetch())
            {
                // On récupère l'ID de la sortie AJOUTE
        	   $_SESSION['ID_calendrier']= $bdd_SAE -> lastInsertId();
        	    // Info sortie Ajouté
        	   $_SESSION['message'] ='La sortie club n°<?php echo $ID_calendrier;?> a bien été ajoutée';
            }
            else 
            {
                 $_SESSION['message'] ='Erreur';
            }
    J'arrive sur le message : Erreur
    Quelqu'un a une idée du pb ? Merci 
    • Partager sur Facebook
    • Partager sur Twitter
      19 octobre 2018 à 12:23:14

      Bonjour,

      As-tu activé les erreurs PDO (cf ma signature) ?

      • Partager sur Facebook
      • Partager sur Twitter
        19 octobre 2018 à 12:57:26

        Je viens de vérifier ... 

        je les avais activé uniquement sur MAMP donc je les ai rajouté sur la connexion en ligne

        // CONNEXION A LA BASE DE DONNEES =============
        try
        {
        
        // En ligne
        $bdd_SAE = new PDO('mysql:host=xxxxx;dbname=xxxx;charset=utf8', 'xxxxx', 'xxxxx', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
        
        }
        
        catch (Exception $e)
        {
                die('Erreur : ' . $e->getMessage());
        }
        // FIN BDD ===================================

        maintenant j'ai :

        Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in 

        • Partager sur Facebook
        • Partager sur Twitter
          19 octobre 2018 à 13:05:11

          Bien,

          Il serait bien d'avoir l'erreur complète.

          • Partager sur Facebook
          • Partager sur Twitter
            19 octobre 2018 à 13:18:30

            La voilà :

            Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in /home/users2/f/frossardweb/www/calendrier/6101_ajout_sortie.php:10 Stack trace: #0 /home/users2/f/frossardweb/www/calendrier/6101_ajout_sortie.php(10): PDOStatement->fetch() #1 /home/users2/f/frossardweb/www/communs/centre.php(258): include('/home/users2/f/...') #2 /home/users2/f/frossardweb/www/communs/index.php(56): include('/home/users2/f/...') #3 {main} thrown in/home/users2/f/frossardweb/www/calendrier/6101_ajout_sortie.phpon line10



            la ligne 10 correspond à la ligne 2 montré tout en haut  : if($req_sortie->fetch())

            -
            Edité par Marie FRO 19 octobre 2018 à 13:20:51

            • Partager sur Facebook
            • Partager sur Twitter
              19 octobre 2018 à 13:21:05

              Pourquoi tu fais un fetch après un INSERT ? Vires-le !

              Ca ne fonctionnera jamais avec MySQL puisque ce dernier ne renvoie rien après un INSERT (ou UPDATE/DELETE/....)

              -
              Edité par julp 19 octobre 2018 à 13:22:12

              • Partager sur Facebook
              • Partager sur Twitter
                19 octobre 2018 à 13:27:21

                ok je le vire, je l'avais mis pour savoir si ma requête était exécutée.

                Super ça marche !!! Merci !

                Comment je peux faire une condition d'affichage si la requête est exécuté ou non ? 

                • Partager sur Facebook
                • Partager sur Twitter
                  19 octobre 2018 à 13:32:07

                  execute te renvoie un boolean, il suffit de faire un test dessus.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 octobre 2018 à 13:33:31

                    Marie FRO a écrit:

                    ok je le vire, je l'avais mis pour savoir si ma requête était exécutée.

                    Super ça marche !!! Merci !

                    Comment je peux faire une condition d'affichage si la requête est exécuté ou non ? 


                    sur I/U/D => rowCount() avec le nombre de ligne impactées dans le IF

                    'fin voir la doc

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Requête préparée INSERT - DPO

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown