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. Bonjour, merci beaucoup.

    Cordialement.

    0
    1. 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
    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, 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
    4. 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 c'est à dire modifié? mon site étais sur un hébergeur il y a encore 2 mois et tout fonctionnait bien.

        0
        1. Contributeur

          bonjour,

          je pense qu'il faut modifier le code PHP.

          0