Bonjour à toutes et à tous !
Je viens vous exposer un petit problème que je rencontre et auquel je n'arrive pas à trouver de solutions satisfaisantes.
Lorsque je fais une requête simple comme la suivante, tout va bien.
Jusque là, pas de soucis. Maintenant, ma requête utilise 2 (ou plus) variables. J'ai donc voulu mettre en place un binding de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $select = $db->select() ->from(...) ->where('i.date_begin > "?"', $date_begin); return $db->fetchAll($select);
Et là, plus rien ne va... Je n'ai aucune erreur, la requête s'exécute correctement. Je n'ai simplement pas le résultat escompté. J'ai en fait l'impression que mes dates sont remplacées par un datetime UNIX (1970-01-01)... Et je ne comprend absolument pas pourquoi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $select = $db->select() ->from(...) ->where('i.date_begin > ":date_begin" AND i.date_close < ":date_close"') ->bind(array(':date_begin' => $date_begin, ':date_close' => $date_close)); return $db->fetchAll($select);
Si je fixe mes variables en dur, de la manière qui suit, j'obtiens bien le bon résultat :
Où est l'erreur ? La fonction bind est-elle mal utilisée ? Il y a-t-il une autre syntaxe, ou une autre manière de faire ? J'avoue être dans le flou...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $select = $db->select() ->from(...) ->where("i.date_begin > '$date_begin' AND i.date_close < '$date_close'"); return $db->fetchAll($select);
Merci pour l'aide que vous pourrez m'apporter.
Partager