Erreur ! SQLSTATE[HY093]: Invalid parameter number:

Résolu

Bonjour, je viens de restaurer mon site internet en local avec Wampserver. En ouvrant mon site j'ai une mauvaise surprise. Voici l'erreur!

Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

Malgrès des recherches je n'arrive pas à résoudre cette erreur? Je vois qu'il s'agit peut-être du nombre de paramètre qui sont invalide...

Pouvez-vous m'aider s'ils vous plait, je vous remercie.

7 réponses

  1. Contributeur

    bonjour,

    je pense qu'il faut modifier le code PHP.

    0
    1. Bonjour c'est à dire modifié? mon site étais sur un hébergeur il y a encore 2 mois et tout fonctionnait bien.

      0
      1. Modérateur

        Bonjour,

        Ce message indique une erreur lors de l'éxecution d'une requête SQL.

        Le nombre de variables attendues par la requête ne correspond pas au nombre de variables utilisées pour le traitement de la requête..

        Bien entendu, sans voir le code php correspondant.. impossible de te dire exactement à quel endroit se trouve cette erreur.


        0
        1. Bonjour, si je supprime cette requète tout redevient normal. Pouvez-vous me dire ce qu'il ne va pas dans cette requète.

          Je vous remercie

          // Récupérer la configuration du site
          $sql = "SELECT * FROM cdc_configsite";
          $config = executeQuery($sql,$datas);
          while ($donnees = $config->fetch()) { ${$donnees->clef} = $donnees->valeur; }
          0
          1. Modérateur

            Que contient ta fonction  executeQuery ?

            Que contient ta variables $datas ? ( elle devrait être null vu que ta requête n'attend aucune variable.. )

            0
        2. Voici la fonction qui sert à faire les requètes SQL elle contient déjà le try/catch.

          function executeQuery($sql,$datas = NULL) {
              $bdd = bdd();
              //exécution de la requête
              try {
                  $requete = $bdd->prepare($sql);
                  $requete->execute($datas);
              } catch(Exception $e) {
                // en cas d'erreur :
                  echo " Erreur ! ".$e->getMessage();
                  exit(0); // en cas d'erreur.. arrête le script !
              }
              return $requete;
          }
          0
          1. Modérateur

            Oui, et c'est moi qui est du te la donner cette fonction...

            Mais là .. je n'ai pas parlé du tout du try/catch ...  je t'ai demandé ce que tu envoies dans ta variable $datas ....   qui, pour la requête que tu veux exécuter... doit être NULL ( sinon.. c'est pour ça que tu as cette erreur ).

            PS: Essaye de bien lire et comprendre ce que je t'écris.. ça évitera qu'on perdu du temps inutilement. Merci.

            0
        3. Bonjour j'ai plus d'erreur pouvez-vous me confirmer si ce que j'ai fait est correct.

          Je vous remercie.

          // Récupérer la configuration du site
          $sql = "SELECT * FROM $cfg";
          $config = executeQuery($sql,$datas = NULL);
          while ($donnees = $config->fetch()) { ${$donnees->clef} = $donnees->valeur; }
          0
          1. Modérateur
            $config = executeQuery($sql,$datas = NULL); // NON !
            
            $config = executeQuery($sql,NULL); // OUI
            0
          2. Modérateur
            @jordane45

            ou encore

            $datas = NULL;
            $config = executeQuery($sql,$datas);
            0
          3. Contributeur
            @jordane45

            ou encore

            $config = executeQuery($sql);
            0
        4. Bonjour, merci beaucoup.

          Cordialement.

          0