Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Aujourd 'hui un souci avec les dates dans mon site web. mon souci vient de ma requête c'est un bout de code vite fait. le but évidement c'est récupérer les enregistrements entre deux dates .Le format de date dans la bd est yyyy-mm-dd
if ($datedebut <> '' && $datefin <> '') { //echo $datefin; $select->where('t.date_depart BETWEEN ? AND ?', $datedebut, $datefin); //$select->where("t.date_depart BETWEEN $datedebut AND $datefin"); // echo $select."\n"; }
quand j'exécute cette requête préparée la variable $datefin prend la même valeur que $datebut bien que les valeurs sont à la base différentes.
à l'inverse quand j'exécute la requête simple
if ($datedebut <> '' && $datefin <> '') { $select->where("t.date_depart BETWEEN $datedebut AND $datefin"); }
dans ce cas $datedebut et $datefin sont bien différents.
alors je me demande pourquoi cette différence de comportement.
cordialement;
Hors ligne
Hello,
Tu dois le faire en 2 étapes :
if ($datedebut <> '' && $datefin <> '') { $select->where('t.date_depart >= ?', $datedebut); $select->where('t.date_depart <= ?', $datefin); }
La clause where() accepte bien 3 paramètres mais le troisième paramètre est dans ce cas le type de la valeur fournie.
@+
Hors ligne
j'utilise toujours les paramètre nommés pour éviter ce genre de pb
WHERE t.date_depart >= :dateDebut
Puis l'ors de l'exécution on passe un tableau associatif les clefs étant les paramètres nommées et les valeurs celles de diverse variable.
ainsi ce n'est pas sensible à l'ordre ni à la répétition. un même paramètre nommé peut être utilisé plusieurs fois dans la requête. (Seul mySQLi ne supporte pas la répétition)
A+JYT
Hors ligne