Partage
  • Partager sur Facebook
  • Partager sur Twitter

Call to a member function execute() on boolean

    16 janvier 2018 à 4:18:12

    Bonjour,

    Je suis entrain de mettre unen ligne, et il y a ce problème qui se pose :

    Fatal error: Uncaught Error: Call to a member function execute() on boolean in /storage/ssd3/068/4295068/public_html/authentification/transfert4.php:46 Stack trace: #0 {main} thrown in /storage/ssd3/068/4295068/public_html/authentification/transfert4.php on line 46

    Voici mon code :

    <?php
    
     // à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
    session_start();
    include("config.php");
    
    $error = false;
    $adminpageError = "";
    $code4Error = "";
    $code4noncorrespondError = "";
    
    if (isset($_SESSION['username']) && $_SESSION['username'] =="admin") {
      $adminpageError = "<p><a href='inscription.php'>Admin page </a></p>";
    }
    
    if(isset($_POST['valider'])){
      if (empty($_POST['code'])) {
        $error = true;
        $codetransfert4Error = "Please enter the transfer code .";
      } else {
        $code4 = htmlentities($_POST['code4'], ENT_QUOTES, "ISO-8859-1");
        $mysqli = mysqli_connect("localhost", "id4295068_roomadmin", "", "id4295068_projet");
        if (!$mysqli) {
          echo "Please check your information and try again";
        } else {
          $query = "SELECT * FROM `client6` WHERE code4='".$code4."'";
          $result = mysqli_query($mysqli,$query) or die(mysqli_error());
          $rows = mysqli_num_rows($result);
          if($rows==1) {
            header("location: load4.php");
          } else {
            $query = "SELECT * FROM `client6` WHERE  code4='".$code4."'";
            $result = mysqli_query($mysqli,$query) or die(mysqli_error());
            $rows = mysqli_num_rows($result);
            if($rows==0) {
              header("location: transfert4non.php");
            }
          }
        }
      }
    }
    
    // Si tout va bien, on peut continuer
    // On récupère tout le contenu de la table client6
    $req = $mysqli->prepare('SELECT * FROM `client6` WHERE username = :username');
    $req->execute(array('username' => $_SESSION['username']));
    
    // On affiche chaque entrée une à une
    while ($donnees = $req->fetch())




    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2018 à 8:26:40

      L'erreur te dit que tu essayes d'utiliser la méthode execute pour un booléen : C'est n'importe quoi, tu mélanges du procédural et de l'objet, remplace mysqli->prepare par mysqli_prepare et remplace mysqli->execute par mysqli->execute.

      Si tu le peux, passe à PDO au lieu d'utiliser mysqli

      • Partager sur Facebook
      • Partager sur Twitter

      Envie de devenir un développeur de mods sur GTA V ? --> Développez votre premier mod sur GTA V

        16 janvier 2018 à 12:50:04

        RamechYT a écrit:

        L'erreur te dit que tu essayes d'utiliser la méthode execute pour un booléen : C'est n'importe quoi, tu mélanges du procédural et de l'objet, remplace mysqli->prepare par mysqli_prepare et remplace mysqli->execute par mysqli->execute.

        Si tu le peux, passe à PDO au lieu d'utiliser mysqli


        Si j'utilise PDO, quelle fonction je peux utiliser pour retourner s'il y a une ligne dans ma base de donnée, c'est à dire pour remplacer ce code :

              $query = "SELECT * FROM `client6` WHERE code4='".$code4."'";
              $result = mysqli_query($mysqli,$query) or die(mysqli_error());
              $rows = mysqli_num_rows($result);
              if($rows==1) {
                header("location: load4.php");
              } else {
                $query = "SELECT * FROM `client6` WHERE  code4='".$code4."'";
                $result = mysqli_query($mysqli,$query) or die(mysqli_error());
                $rows = mysqli_num_rows($result);
                if($rows==0) {
                  header("location: transfert4non.php");
                }
              }



        • Partager sur Facebook
        • Partager sur Twitter
          16 janvier 2018 à 19:00:35

          Tu peux tout simplement remplacer ce code par :

          $query = $pdo->prepare('SELECT * FROM `client6` WHERE code4=?');
          $query->execute(array($code4));
          
          if ($response = $query->execute(array($code4)))
          {
          	if ($response->fetchColumn() == 0)
          	{
          		header("location: load4.php");
          	}
          	
          	else
          	{
          		header("location: transfert4non.php");
          	}
          }

          Ton code est mal fait, pourquoi ? Car :

          • Pour la requête de sélection tu concatènes directement, IL FAUT FAIRE DES REQUÊTES PRÉPARÉES si tu ne veux pas qu'un saligaud fasse du mal à ton site !
          • Tu effectues deux fois la même requête, elles sont exactement les mêmes, pour illustrer ça c'est comme si tu réglais un gros problème de math et que tu recommençais à chaque fois ton premier calcul alors que tu connais le résultat !
          • Tu utilises parfois mysqli en objet et parfois en procédural ! On dirait que ce n'est pas la même personne qui a écris ce code, si c'est le cas, mets toi d'accord avec ton équipe pour savoir quoi utiliser. Et si ce n'est pas le cas, rends ton code cohérent.

          Ramech.

          • Partager sur Facebook
          • Partager sur Twitter

          Envie de devenir un développeur de mods sur GTA V ? --> Développez votre premier mod sur GTA V

            16 janvier 2018 à 19:32:20

            RamechYT a écrit:

            Tu peux tout simplement remplacer ce code par :

            $query = $pdo->prepare('SELECT * FROM `client6` WHERE code4=?');
            $query->execute(array($code4));
            
            if ($response = $query->execute(array($code4)))
            {
            	if ($response->fetchColumn() == 0)
            	{
            		header("location: load4.php");
            	}
            	
            	else
            	{
            		header("location: transfert4non.php");
            	}
            }

            Ton code est mal fait, pourquoi ? Car :

            • Pour la requête de sélection tu concatènes directement, IL FAUT FAIRE DES REQUÊTES PRÉPARÉES si tu ne veux pas qu'un saligaud fasse du mal à ton site !
            • Tu effectues deux fois la même requête, elles sont exactement les mêmes, pour illustrer ça c'est comme si tu réglais un gros problème de math et que tu recommençais à chaque fois ton premier calcul alors que tu connais le résultat !
            • Tu utilises parfois mysqli en objet et parfois en procédural ! On dirait que ce n'est pas la même personne qui a écris ce code, si c'est le cas, mets toi d'accord avec ton équipe pour savoir quoi utiliser. Et si ce n'est pas le cas, rends ton code cohérent.

            Ramech.

            Je vais suivre vos conseils et réessayer tout ça. Je vous reviendrai . Merci

            -
            Edité par IamLouky 16 janvier 2018 à 19:34:00

            • Partager sur Facebook
            • Partager sur Twitter

            Call to a member function execute() on boolean

            × 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