Bonjour,
J'adapte un programme qui fonctionne correctement avec une base MySQL pour passer sur une base SQL Server et je bute sur le problème suivant:
Mon source 'modifyPrevision.php' fait appel à une fonction getPrevBy du source BDD.php et si je trace le résultat de requête en base SQL, je n'ai pas la même chose dans l'appelant et dans la fonction .
- Dans BDD.php: si je trace le résultat du sqlsrv_query effectué dans la fonction getPrevBy, la requête me renvoie une ressource que je peux exploiter
extrait de BDD.php :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 <?php $fic = "c:\\TMP_LP\\traceBDD.txt"; $fp = fopen ($fic, "a+"); fwrite($fp, "----- trace BDD.php fonction getPrevBy debut -------------- \r\n"); fwrite($fp, " la REQUETE getPrevBy:".$query ."\r\n"); $this->connexion(); $res = sqlsrv_query ($this->connexion,$query); if( ($errors = sqlsrv_errors() ) != null) { foreach( $errors as $error ) { echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />"; echo "code: ".$error[ 'code']."<br />"; echo "message: ".$error[ 'message']."<br />"; } die(); } if (is_resource($res)) { fwrite($fp, "is_resource: TRUE \r\n"); $type= get_resource_type($res) ; fwrite($fp, " type : $type \r\n"); } else { fwrite($fp, "is_resource: FALSE \r\n"); } while ($row = sqlsrv_fetch_array($res, SQLSRV_FETCH_NUMERIC)){ $row0 = utf8_encode($row[0]); $row1 = utf8_encode($row[1]); $row2 = utf8_encode($row[2]); fwrite($fp, "ROW: ".$row0 ." - ".$row1." - ".$row2."\r\n"); } fwrite($fp, "----- trace BDD.php fonction getPrevBy fin -------------- \r\n"); fclose($fp);
résultat dans le fichier de trace:
- dans mon programme appelant modifyPrevision.php :
extrait de source modifyPrevision.php :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php $lesforecasts=$bdd->getPrevBy( $order, $proj, $bud, $csr, $team, $budTyp, $suptod,$inftod, $suptot, $inftot, $supexc, $infexc, $supinc,$infinc, $dateP, $dateS, $deb, $stat, $pagination); $fic = "c:\\TMP_LP\\traceModifyPrevision.txt"; $fp = fopen ($fic, "a+"); fwrite($fp, "----- trace ModifyPrevision.php debut----------------- \r\n"); if (is_resource($lesforecasts)) { fwrite($fp, "is_resource TRUE \r\n"); $type= get_resource_type($lesforecasts) ; fwrite($fp, " type : $type \r\n"); } else { fwrite($fp, "is_resource FALSE \r\n"); } while ($row = sqlsrv_fetch_array($lesforecasts, SQLSRV_FETCH_NUMERIC)){ $row0 = utf8_encode($row[0]); $row1 = utf8_encode($row[1]); $row2 = utf8_encode($row[2]); var_dump($row); fwrite($fp, "ROW: ".$row0 ." - ".$row1." - ".$row2."\r\n"); } fwrite($fp, "-----trace ModifyPrevision.php fin----------------- \r\n"); fclose($fp);
résultat dans le fichier de trace: la ressource semble vide, aucune ligne de la boucle while n'est affichée et le var_dump non plus
D'avance merci de votre aide.
Partager