Page 1 sur 1

ajout d'une entrée à une table

Posté : 22 mai 2015, 21:43
par sarah mb
bonsoir ,
j'ai fait ce script pour ajouter des produit à une table mais j'ai un message d'erreur qui s'affiche
voici le script


$codep=htmlspecialchars($_POST["code"]);
$im=$nom;
$coulr=htmlspecialchars($_POST["coulr"]);
$prix=htmlspecialchars($_POST["prix"]);
$tit=$_POST["description"];
$disc=htmlspecialchars($tit);
$h=$_POST["liste"];
echo "le disc est $h<br>";
if(empty($codep)||empty($im)||empty($coulr)||empty($prix)||empty($disc)||empty($h))
{
echo" saisis tout les champs svp";
}

else{
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=projets;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
echo $h ;
$affich = $bdd->prepare('SELECT codef FROM famille where nom =:x');
$affich->execute(array('x'=>$h));
$table=$affich->fetch();
$req = $bdd->prepare('INSERT INTO produit(codef, imag,couleur,prix,caractéristiques,codep) VALUES (:codef, :imag,:couleur,:prix,:caractéristiques,:codep)');
$req->execute(array(
'codef' => $table['codef'],
'im' => $im,
'coulr' => $coulr,
'prix' => $prix,
'disc' => $disc,
'codep' => $codep
));

}
?>



le message d'erreur est:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projet\ajout2_prod.php:113 Stack trace: #0 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projet\ajout2_prod.php(113): PDOStatement->execute(Array) #1 {main} thrown in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projet\ajout2_prod.php on line 113 :?: :cry:

Re: ajout d'une entrée à une table

Posté : 22 mai 2015, 22:16
par sarah mb
l'erreur est dans la requête d'ajout

$req = $bdd->prepare('INSERT INTO produit(codef, imag,couleur,prix,caractéristiques,codep) VALUES (:codef, :imag,:couleur,:prix,:caractéristiques,:codep)');
$req->execute(array(
'codef' => $table['codef'],
'im' => $im,
'coulr' => $coulr,
'prix' => $prix,
'disc' => $disc,
'codep' => $codep
));
exactement il indique la ligne de" ));"

Re: ajout d'une entrée à une table

Posté : 24 mai 2015, 14:44
par Ryle
Bonjour,

Tout est dit dans le message d'erreur :
"Invalid parameter number" : le nombre de paramètres passés dans ta requête ne correspond pas au nombre de valeurs attendues
"parameter was not defined" : au moins l'un des paramètres attendus n'est pas défini

Il ne reste plus qu'à comparer les paramètres de ta requêtes à ceux de ton tableau pour trouver celui ou ceux qui manquent / qui ne correspondent pas.
- Ta requête : :codef, :imag, :couleur, :prix, :caractéristiques, :codep
- Ton tableau : 'codef', 'im', 'coulr', 'prix', 'disc', 'codep'
Ton tableau de paramètre n'a pas d'index "imag", "couleur" ou "caractéristiques", ta requête ne peut donc pas fonctionner :)