Bonjour,
j'ai un petit problème avec l'exécution d'une requête attaquant une base Oracle dans un script PHP.
Voici le bout de code qui construit la requête :
Si je l'affiche pour m'assurer qu'elle a bien été construite, j'obtiens par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $requete = "SELECT TRAITEMENT, ".$type_req." as VAL FROM XXCC.XXCC_ALR_GTS WHERE trunc(completion_date, '".$trunc."') = trunc (to_date('01/".$mois_req."/".$annee."', 'DD/MM/YYYY'), '".$trunc."') group by TRAITEMENT order by VAL"; $s = OCIParse($conn, $requete); OCIExecute($s, OCI_DEFAULT);
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part SELECT TRAITEMENT, AVG(DUREE_MOY) as VAL FROM XXCC.XXCC_ALR_GTS WHERE trunc(completion_date, 'Month') = trunc (to_date('01/5/2007', 'DD/MM/YYYY'), 'Month') group by TRAITEMENT order by VAL
... ce qui semble correct. Tout du moins, lorsque je l'exécute dans un requêteur (en l'occurence TOAD), j'ai le bon résultat (dans mon cas, 64 rows).
Puis vient ma petite boucle pour récupérer ces lignes dans PHP :
Et là (oui, c'est le drame) $data et $legends contiennent chacun environ 250 éléments : exactement comme si la clause WHERE n'avait pas été prise en compte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $data = array(); $legends = array(); while (OCIFetch($s)) { array_push($data, ociresult($s, "VAL")); array_push($legends, ociresult($s, "TRAITEMENT")); }
Je fais mes premiers pas dans le monde PHP/Oracle, peut-être y a-t-il quelque chose que j'ignore à propos de la gestion des dates, quelque chose qui marche directement sur la base mais pas via PHP, ou je ne sais quoi encore ?
Si quelqu'un a une idée
Quelques petites infos au cas où : je développe sur EasyPHP 1.8, qui inclut PHP 4.3.1 je crois ; j'ai rajouté l'extension php_oci8.dll. Le but du WHERE est de sélectionner les lignes dont la date correspond à un mois et/ou une année donnée, j'utilise trunc car j'ai trouvé ça quelque part mais peut-être y a-t-il une meilleure façon de faire ?
Partager