Envoyé par
sabotage
Tu ne précises pas ton problème mais je suppose que tu ne peux lier des paramètres qui n'existaient pas lors du prepare.
Salut,
Lors d'une requete normale (pas de pdo) je procedais de cette façon :
CODE]$sql = "SELECT * FROM membres, ph_normale WHERE membres.sexe = $sexe AND ph_normale.type_photo = 'principale' AND ph_normale.pseudo = membres.pseudo";[[/CODE]
puis pour les champs facultatifs je mettais
$sql .= " AND membres.annee_naissance BETWEEN $age_min AND $age_max";
Avec pdo il faut en plus utiliser BindParam ou BindValue or
je ne peux utiliser cette fonction que pour les champs présents dans la requete et cette fonction doit être utilisée après prepare.
Pour mon code php, la chose suivante ne fonctionne pas :
1 2 3 4 5 6 7 8
|
$sql = "SELECT * FROM membres, ph_normale WHERE membres.sexe = :sexe AND ph_normale.type_photo = 'principale' AND ph_normale.pseudo = membres.pseudo";
$stmt = $dbh->prepare($sql);
$stmt->BindParam(':sexe', $sexe);
$sql .= " AND membres.annee_naissance BETWEEN :age_min AND :age_max";
$stmt->BindParam(':age_min', $age_min);
$stmt->BindParam(':age_max', $age_max); |
Or, en placant la jointure (second $sql) juste après le premier (et en laissant tout le reste tel quel) la requete fonctionne.
Ma question est donc : Si tous les champs ne sont pas obligatoires comment faire pour que les variables de ces champs ainsi queBindParam ne soient utilisés que quand les champs sont remplis.
Je sais pas si j'ai été très clair dans mon explication mais bon
Partager