Message d'erreur 'Erreur : SQLSTATE[HY093]: '

Fermé
glow_ivory Messages postés 18 Date d'inscription samedi 13 février 2010 Statut Membre Dernière intervention 3 juin 2012 - 9 oct. 2011 à 12:44
 le père - 13 oct. 2011 à 23:46
Bonjour,
j'ai établi un questionnaire sous forme de listes déroulantes
sur 3 choix ,au moment de l'envoi des données à ma base de données MySQL,il me retourne le message d'erreur suivant:

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

voici mon code PHP:
<?php
$stock1=0;
$stock2=0;
$stock3=0;
$stock4=0;
$stock5=0;
$stock6=0;

$e1=$_POST['stock1'];
$e2=$_POST['stock2'];
$e3=$_POST['stock3'];
$e4=$_POST['stock4'];
$e5=$_POST['stock5'];
$e6=$_POST['stock6'];


if($e1="Excellent"){$stock1=10;}
if($e1="Bon"){$stock1=5;}
if($e1="Mauvais"){$stock1=0;}

if($e2="Excellent"){$stock2=10;}
if($e2="Bon"){$stock2=5;}
if($e2="Mauvais"){$stock2=0;}

if($e3="Excellent"){$stock3=10;}
if($e3="Bon"){$stock3=5;}
if($e3="Mauvais"){$stock3=0;}

if($e4="Excellent"){$stock4=10;}
if($e4="Bon"){$stock4=5;}
if($e4="Mauvais"){$stock4=0;}

if($e5="Excellent"){$stock5=10;}
if($e5="Bon"){$stock5=5;}
if($e5="Mauvais"){$stock5=0;}

if($e6="Excellent"){$stock6=10;}
if($e6="Bon"){$stock6=5;}
if($e6="Mauvais"){$stock6=0;}


try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=audit', 'root', '', $pdo_options);


$req = $bdd->prepare('INSERT INTO stock(stock1,stock2,stock3,stock4,stock5,stock6) VALUES(stock1, :stock2, :stock3, :stock4, :stock5, :stock6 )');
$req->execute(array(

'stock1'=> $stock1,
'stock2'=> $stock2,
'stock3'=> $stock3,
'stock4'=> $stock4,
'stock5'=> $stock5,
'stock6'=> $stock6


));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

?>

comme vous le voyez mon questionnaire est basé sur un système de scoring
Excellent correspond à la note 10 et ainsi de suite

Merci de m'aider si vous pouvez


A voir également:

4 réponses

ljm972 Messages postés 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
9 oct. 2011 à 18:21
Salut,
INSERT INTO stock(stock1,stock2,stock3,stock4,stock5,stock6)
remplace $stock[n] par $e[n]
0
glow_ivory Messages postés 18 Date d'inscription samedi 13 février 2010 Statut Membre Dernière intervention 3 juin 2012
9 oct. 2011 à 23:21
salut,
je peux pas remplacer $stock[n] par $e[n] ,parce que la variable $stock[n] va recevoir un entier(0,5,10) dépendant du contenu de la variable $e[n] qui reçoit la valeur choisie dans la liste déroulante de mon formulaire
Merci en tout cas
0
Bonjour

Dans ta requête préparée, tu as oublié le ":" devant stock1
$req = $bdd->prepare('INSERT INTO stock(stock1,stock2,stock3,stock4,stock5,stock6) VALUES(:stock1, :stock2, :stock3, :stock4, :stock5, :stock6 )'); 
0
glow_ivory Messages postés 18 Date d'inscription samedi 13 février 2010 Statut Membre Dernière intervention 3 juin 2012
10 oct. 2011 à 19:07
Merci une autre fois pour votre aide,
j'ai fais la remarque moi même ,mais ça marche pas :(
0
Pourtant, ça correspondait bien au message d'erreur. As-tu toujours le même ? Peux-tu montrer ton code corrigé ?
0
glow_ivory Messages postés 18 Date d'inscription samedi 13 février 2010 Statut Membre Dernière intervention 3 juin 2012
11 oct. 2011 à 20:11
salut,
c'est toujours le meme message d'erreur qui s'affiche ,malgré l'ajout des deux points manquants avant stock1.



<?php
$stock1=0;
$stock2=0;
$stock3=0;
$stock4=0;
$stock5=0;
$stock6=0;

$e1=$_POST['stock1'];
$e2=$_POST['stock2'];
$e3=$_POST['stock3'];
$e4=$_POST['stock4'];
$e5=$_POST['stock5'];
$e6=$_POST['stock6'];


if($e1="Excellent"){$stock1=10;}
if($e1="Bon"){$stock1=5;}
if($e1="Mauvais"){$stock1=0;}

if($e2="Excellent"){$stock2=10;}
if($e2="Bon"){$stock2=5;}
if($e2="Mauvais"){$stock2=0;}

if($e3="Excellent"){$stock3=10;}
if($e3="Bon"){$stock3=5;}
if($e3="Mauvais"){$stock3=0;}

if($e4="Excellent"){$stock4=10;}
if($e4="Bon"){$stock4=5;}
if($e4="Mauvais"){$stock4=0;}

if($e5="Excellent"){$stock5=10;}
if($e5="Bon"){$stock5=5;}
if($e5="Mauvais"){$stock5=0;}

if($e6="Excellent"){$stock6=10;}
if($e6="Bon"){$stock6=5;}
if($e6="Mauvais"){$stock6=0;}


try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=audit', 'root', '', $pdo_options);


$req = $bdd->prepare('INSERT INTO stock(stock1,stock2,stock3,stock4,stock5,stock6) VALUES(:stock1, :stock2, :stock3, :stock4, :stock5, :stock6 )');
$req->execute(array(

'stock1'=> $stock1,
'stock2'=> $stock2,
'stock3'=> $stock3,
'stock4'=> $stock4,
'stock5'=> $stock5,
'stock6'=> $stock6


));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

?>
0
Je n'ai pas l'habitude de PDO mais si j'en crois le manuel PHP tu devrais aussi utiliser le : dans les noms des paramètres de l'array que tu passes à execute :
$req->execute(array(
  ':stock1'=> $stock1,
  ':stock2'=> $stock2,
  ':stock3'=> $stock3,
  ':stock4'=> $stock4,
  ':stock5'=> $stock5,
  ':stock6'=> $stock6 )); 
0