IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

SQLSTATE[HY093]: Besoin d'aide ! [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Par défaut SQLSTATE[HY093]: Besoin d'aide !
    Bonjour à tous,
    Je suis entrain de faire un petit quiz en ligne, et je voulais le faire seul.
    J'ai cependant un petit problème : SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens.
    J'aimerais un peu d'aide .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $a=0;
    $c=1;
    $bdd = new PDO('mysql:host=localhost;dbname=quizz', 'root', '');
    $sql="INSERT INTO reponsej (idj,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q18,q19,q20,q21,q22,q23,q24,q25,q26,q27,q28,q29,q30,q31,q32,q33,q34,q35,q36,q37,q38,q39,q40,q41,q42,q43,q44,q45,q46,q47,q48,q49,q50,q51,q52,q53,q54,q55,q56,q57,q58,q59,q60,q61,q62,q63,q64,q65,q66,q67,q68,q69,q70,q71,q72,q73,q74,q75,q76,q77,q78,q79,q80)
     value(:idj,:q1,:q2,:q3,:q4,:q5,:q6,:q7,:q8,:q9,:q10,:q11,:q12,:q13,:q14,:q15,:q16,q17,:q18,:q19,:q20,:q21,:q22,:q23,:q24,:q25,:q26,:q27,:q28,:q29,:q30,:q31,:q32,:q33,:q34,:q35,:q36,:q37,:q38,:q39,:q40,:q41,:q42,:q43,:q44,:q45,:q46,:q47,:q48,:q49,:q50,:q51,:q52,:q53,:q54,:q55,:q56,:q57,:q58,:q59,:q60,:q61,:q62,:q63,:q64,:q65,:q66,:q67,:q68,:q69,:q70,:q71,:q72,:q73,:q74,:q75,:q76,:q77,:q78,:q79,:q80)";
     $ajout=$bdd->prepare($sql);
     $ajout->bindParam(':idj', $idj);
     while($c<81){
    	 $ajout->bindParam(":q$c", $arr["$a"]);
    	 $a++;
    	 $c++;
    	 }
    $ajout->execute();
    PS: Je sais que c'est améliorable, mais je suis un peu dans l'urgence .

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Par défaut
    C'est bon, j'ai trouvé, merci quand même.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    ça aurait été chouette de partager la solution. En l'occurrence, je crois qu'il manque les : devant le paramètre q17 ::q15,:q16,q17,:q18
    Tu aurais pu automatiser l'écriture de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $bdd = new PDO('mysql:host=localhost;dbname=quizz', 'root', '');
     
    $columns = array('idj');
    $params = [];
    // colonne idj
    $columns[] = 'idj';
    $params[':idj'] = $idj;
    // colonnes q
    foreach($arr as $k => $val) {
        $q = $k+1;   
        $columns[] = 'q'.$q;
        $params[':q.'$q] = $val;
    }
    $sql = "INSERT INTO reponsej (".implode(', ', $columns).") values (".implode(', ', array_keys($params)).")";
    $ajout=$bdd->prepare($sql);
    $ajout->execute($params);
    Et la structure de la base de données est clairement améliorable
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  2. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29
  3. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo