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:

Nom : traceBDD.jpg
Affichages : 184
Taille : 42,7 Ko

- 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
Nom : fichierTraceModifyPrevision.jpg
Affichages : 167
Taille : 11,9 Ko

D'avance merci de votre aide.