Erreur ! SQLSTATE[HY093]: Invalid parameter number:

Résolu
LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    je pense qu'il faut modifier le code PHP.

    0
  2. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

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

    0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    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
  4. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       

      Que contient ta fonction  executeQuery ?

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

      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       

      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
  7. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      $config = executeQuery($sql,$datas = NULL); // NON !
      
      $config = executeQuery($sql,NULL); // OUI
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         

        ou encore

        $datas = NULL;
        $config = executeQuery($sql,$datas);
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         

        ou encore

        $config = executeQuery($sql);
        0
  8. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    Bonjour, merci beaucoup.

    Cordialement.

    0