petit pb dans une requette SQL
Posté : 21 mai 2010, 19:54
Bonjour Bonjour,
Voila j'ai un petit probleme lors de la creation d'une requette SQL
je suis en train de créer un site pour gerer ma collection de vinyles
et le probleme qui se pose a moi est le suivant!
pour la recherche j'ai a peu près 10 critere (don 3 sont des bouton radio)
le truc serai de faire un recherche en fonction des champ rempli par exemple recherche tous les ablum de 1996 si l'utilisateur n'a rentré que 1996
mais faire un recherche de Rage Against The machine en 1996 si l'utilisateur a rentré le deux champs.
il faut donc faire une boucle "foreach" et verifier qu'il y a quelque chose dans les champs
mon code ressemble a peu près a ça
et mon message d'erreur est le suivant
Voila j'ai un petit probleme lors de la creation d'une requette SQL
je suis en train de créer un site pour gerer ma collection de vinyles
et le probleme qui se pose a moi est le suivant!
pour la recherche j'ai a peu près 10 critere (don 3 sont des bouton radio)
le truc serai de faire un recherche en fonction des champ rempli par exemple recherche tous les ablum de 1996 si l'utilisateur n'a rentré que 1996
mais faire un recherche de Rage Against The machine en 1996 si l'utilisateur a rentré le deux champs.
il faut donc faire une boucle "foreach" et verifier qu'il y a quelque chose dans les champs
mon code ressemble a peu près a ça
Code : Tout sélectionner
/*
*
* On initialise les variable et pui on compte le nombre d'entres valide
*
*/
$i=0;
$nbmax=0;
foreach($_POST as $element)
{
$nbmax=$nbmax+1;
}
/*
*
*On Prepare la requette et on rempli la requette en fonction du fait que les champs osnt remplis ou non
*
*/
$reqsql = 'SELECT * FROM vinyles WHERE';
foreach($_POST AS $clef => $valeur)
{
if($valeur!="")
{
if($i<$nbmax)
{
$reqsql = $reqsql .$clef. ' LIKE %:' .$valeur. '% AND ';
$champremplis[$clef] = $valeur;
}
else
{
$reqsql= $reqsql . $clef . ' LIKE %:' .$valeur. '% ';
$champremplis[$clef] = $valeur;
}
}
$i=$i+1;
}
print_r($clef);
$reponse = $bdd->prepare($reqsql);
$reponse->execute($champremplis)or die(print_r($bdd->errorInfo()));
Code : Tout sélectionner
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp\www\test\resultats.php on line 93