Partage
  • Partager sur Facebook
  • Partager sur Twitter

[ERREUR][MYSQLI] paramétrage de bind_param

Sujet résolu
    15 septembre 2021 à 18:19:37

    Bonjour,

    Je suis en train de réaliser ma premiere requete insert en utilisant  une requete préparé.

    en m'inspirant de la doc:

                                    $reqins = $conn->prepare ("INSERT into utilisateur (uNom,uEmail,u_mdp) values ( :nom, :email, :mdp)");
                                    $reqins->bindParam(':nom',$nom) ;
                                    $reqins->bindParam(':email',$email) ;
                                    $reqins->bindParam(':mdp',$mdp) ;                               
                                    $reqins->excute();

    voici le message d'erreur:

    Fatal error: Uncaught Error: Call to a member function bindParam() on bool in /srv/web/plateforme-immo/creationcompte.php:71 Stack trace: #0 {main} thrown in /srv/web/plateforme-immo/creationcompte.php on line 71

    Pouvez vous m'aider à comprendre mon erreur ?

    merci.


    -
    Edité par MiaoLee 16 septembre 2021 à 5:50:05

    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2021 à 18:26:31

      Bonsoir,

      activation des erreurs pdo ? cf signature

      c'est "execute" et non "excute" à la ligne 5

      code complet en cachant les données sensible ?

      • Partager sur Facebook
      • Partager sur Twitter
        15 septembre 2021 à 18:40:54

        Bonjour Aurelien10!

        Meci pour ton aide,

        desolé autant pour moi je suis avec mysqli objet.

        j'ai modifier mais toujours la meme erreur.

                                    $nom = $_POST['nom'];
                                    $mail = $_POST['email'];
                                    $mdp = $_POST['mdp'];
                                    $mdp2 = $_POST['mdp2'];
        
                                    $reqv = $conn->prepare("SELECT uEmail from utilisateur Where uEmail = ? ");
                                    $reqv->bind_param("s",$mail);
                                    $reqv->execute();
                                    $reqv->bind_result($email);
                                    $reqv->fetch();
        
                                    if($email == null){
        
                                        $mdp = password_hash($mdp,PASSWORD_DEFAULT);
        
                                        $reqins = $conn->prepare ("INSERT into utilisateur (uNom,uEmail,u_mdp) values ( ?,?,?);");
                                        $reqins->bind_param("s",$nom) ;
                                        $reqins->bind_param("s",$email) ;
                                        $reqins->bind_param("s",$mdp) ;                               
                                        $reqins->execute();


        Je viens de modifier en suivant l'autre doc mais meme erreur.

        -
        Edité par MiaoLee 15 septembre 2021 à 18:42:04

        • Partager sur Facebook
        • Partager sur Twitter
          15 septembre 2021 à 18:45:18

          cela viens surement de la connexion. active les erreurs (cf la doc de mysqli)

          je t'invite a revoir la doc de la fonction bind_param, elle ne s'utilise pas ainsi

          • Partager sur Facebook
          • Partager sur Twitter
            15 septembre 2021 à 19:31:39

            je viens de consulter la doc,

            Concernant la connexion je suis pas sur que ca soit ce que tu attendais.

            Concernant bind_param, j'ai modifier mais même erreur. mais je ne comprend pas quand tu dis que je ne l'utilise pas de la bonne façon. que veux-tu dire ?

                                        }
            
                                        $nom = $_POST['nom'];
                                        $mail = $_POST['email'];
                                        $mdp = $_POST['mdp'];
                                        $mdp2 = $_POST['mdp2'];
            
                                        if ($mysqli->connect_errno) {
                                            printf("Échec de la connexion: %s\n", $mysqli->connect_error);
                                            exit();
                                        }
            
                                        $reqv = $conn->prepare("SELECT uEmail from utilisateur Where uEmail = ? ");
                                        $reqv->bind_param("s",$mail);
                                        $reqv->execute();
                                        $reqv->bind_result($email);
                                        $reqv->fetch();
            

            Merci

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

              La connexion c'est le mysqli_connect ou new Mysqli.....

              dans bind paramd, tu dois avoir autant de "s" que de "?" dans la requête préparer.

              • Partager sur Facebook
              • Partager sur Twitter
                15 septembre 2021 à 22:28:47 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée


                Pas d'aide concernant le code par MP, le forum est là pour ça :) (en plus je n'y connais rien en C)

                  16 septembre 2021 à 6:04:20

                  Bonjour ,

                  Lameecarlate, sur ta demande j'ai modifier le titre en tant le plus précis possible.

                  Aurelien10!

                  Voici mon fichier connexion mysql:

                  <?php 
                  $host = "localhost";
                  $name = "****";
                  $password = "************";
                  $database = "db_plateforme_immo";
                  
                  $conn = new mysqli($host,$name,$password,$database); 
                  
                  // Check connection
                  if ($conn->connect_error) {
                    die("Connection failed: " . $conn->connect_error);
                  }
                  // echo "Connected successfully";

                  et concernant le fichier ou je souhaite inserer:

                                              $nom = $_POST['nom'];
                                              $mail = $_POST['email'];
                                              $mdp = $_POST['mdp'];
                                              $mdp2 = $_POST['mdp2'];
                  
                                              $reqv = $conn->prepare("SELECT uEmail from utilisateur Where uEmail = ? ");
                                              $reqv->bind_param("s",$mail);
                                              $reqv->execute();
                                              $reqv->bind_result($email);
                                              $reqv->fetch();
                  
                                              if($email == null){
                  
                                                  $mdp = password_hash($mdp,PASSWORD_DEFAULT);
                  
                                                  $reqins = $conn->prepare ("INSERT into utilisateur (uNom,uEmail,u_mdp) values ( ?,?,?);");
                                                  $reqins->bind_param("sss",$nom,$email,$mdp) ;                             
                                                  $reqins->execute();

                  Le message d'erreur a disparu :)

                  mais la requête insert ne fonctionne toujours pas.

                  Merci encore pour ton aide.




                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 septembre 2021 à 19:41:12

                    Bonjour,

                    je rouvre le sujet car je rencontre encore le même problème sur une autre de mes requêtes insert et je n' arrive pas a trouver de solution

                    je précise que la première requête utilise la connexion et que le connexion fonctionne.

                    voici le code:

                                $sqlmail = $conn->prepare("SELECT count(uEmail) as mail from utilisateur where uEmail = ? ");
                                $sqlmail->bind_param("s", $email);
                                $sqlmail->execute();
                                $sqlmail->bind_result($mail);
                                $sqlmail->fetch();
                                
                                if($mail){
                                
                                    //l'adresse mail existe  
                                    //enregistrement sans ajouter la partie contact
                    
                                    //requete d'insertion
                                    echo 'requete insert';
                    
                    
                                    $reqins = $conn->prepare("INSERT INTO immobilier (
                                        immobilier_cat,
                                        immobilier_titre,
                                        immobilier_desc,
                                        immobilier_prix,
                                        immobilier_photo1,
                                        immobilier_photo2,
                                        immobilier_photo3,
                                        immobilier_photo4,
                                        immobilier_photo5,
                                        immobilier_photo6,
                                        immobilier_photo7,
                                        immobilier_photo8,      
                                        immobilier_pays,
                                        immobilier_regions,
                                        immobilier_adresse,
                                        immobilier_cp,
                                        immobilier_quartier,
                                        immobilier_visible,
                                        idx_utilisateur,
                                        idx_villes
                                        ) VALUES (
                                        ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
                    
                                    $reqins->bind_param("ississssssssiisssiii",$cat,$titre,$desc,$prix,$photo1,$photo2,$photo3,$photo4,$photo5,$photo6,$photo7,$photo8,$pays,$region,$adresse,$cp,$quartier,$visible,$id,$ville);              
                    
                                    $reqins->execute();
                                            

                    et voici le message d'erreur:


                    Fatal error: Uncaught Error: Call to a member function bind_param() on bool in /srv/web/plateforme-immo/deposerannonce.php:312 Stack trace: #0 {main} thrown in /srv/web/plateforme-immo/deposerannonce.php on line 312

                    Merci d'avance pour votre aide.

                    Cordialement.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 septembre 2021 à 21:27:53

                      Salut

                      Là, le souci est que la requête n'a pas pu être préparée pour une raison ou une autre qui devrait t'être mentionnée si tu as bien activé l'affichage de toutes les erreurs mysqli en plus de PHP.

                      -
                      Edité par Ymox 18 septembre 2021 à 21:28:02

                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 septembre 2021 à 7:27:50

                        Bonjour Ymox,

                        J'ai vu quelques tuto, c'est vrai a ce sujet mais j'avais peur de faire une erreur et de planté  mon pc.

                        Peux tu me dire comment activer les erreur mydsl sous ununtu 20.04.

                        Merci beaucoup.

                        Cordialement.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 septembre 2021 à 10:17:32

                          Pour activer les erreurs, c'est la même chose quel que soit l'OS vu qu'on parle de PHP. Tu trouveras des informations sinon dans la FAQ liée dans ma signature, soit dans la documentation officielle de PHP.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 septembre 2021 à 20:18:00

                            Bonsoir à tous,

                            Je viens de trouver la solution a mon problème,

                            Il suffisait de clôturer la première requête mais bon j'ai fait aussi d'autre manip.

                            $sqlmail = $conn->prepare("SELECT count(uEmail) as mail from utilisateur where uEmail = ? ");
                            $sqlmail->bind_param("s", $email);
                            $sqlmail->execute();
                            $sqlmail->bind_result($mail);
                            $sqlmail->fetch();
                            $sqlmail->close();


                            Merci a tous pour votre aide.

                            • Partager sur Facebook
                            • Partager sur Twitter

                            [ERREUR][MYSQLI] paramétrage de bind_param

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