Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & SQL-Server
PHP & SQL-Server Forum d'entraide sur SQL-Server avec PHP. Avant de poster -> FAQ SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/04/2011, 13h01   #1
Invité de passage
 
Inscription : mars 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 31
Points : 4
Points : 4
Par défaut SQLSRV et MultipleActiveResultSets

Bonjour,
suite à la suppression de la fonction mssql avec PHP 5.3, je m'amuse a refaire tout mon code grâce aux drivers SQLSRV. j'ai donc refait mon code ainsi :

Code :
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$servername = "SERAPP";
$user = "sa";
$pass = "xxx";
$data = "suivheure";
$connectionInfo = array("UID" => $user, "PWD" => $pass, "Database" => $data, 'MultipleActiveResultSets'=> true);
$connect = sqlsrv_connect( $servername, $connectionInfo);
$requetesql = "SELECT max(Date) AS Date, Visa FROM [suivheure].[dbo].[EvenementUtils] WHERE IDMachine='".$Machine."' AND IDEvenement = '15' GROUP BY Visa";
$resultatsql = sqlsrv_query($connect ,$requetesql);
while ($ligne = sqlsrv_fetch_array($resultatsql)){
  $VisaDernierUtils = $ligne['Visa'];
  echo $ligne['Visa'];
  $DateDernierUtils = $ligne['Date'];
  $requetesql2 = "SELECT max(Date) AS Date FROM [suivheure].[dbo].[EvenementUtils] WHERE IDMachine='".$Machine."' AND IDEvenement = '16' And Visa = '".$VisaDernierUtils."'";
  $resultatsql2 = sqlsrv_query($connect, $requetesql2);
  if ($resultatsql2 == false){
    $DateDernierUtilsDéco = 0;
    echo "resultatsql2 = false<br>";
  }
  else{
    $ligne2 = sqlsrv_fetch_array($resultatsql2);
    echo "resultatsql2 != false <br>";
    $DateDernierUtilsDéco = $ligne2['Date'];
  }
  if ($DateDernierUtils > $DateDernierUtilsDéco){
    $requetesql3 = "SELECT Interim, MOI FROM [suivheure].[dbo].[EvenementUtils] WHERE IDMachine='".$Machine."' AND IDEvenement = '15' And Visa = '".$VisaDernierUtils."'";
    echo $requetesql3."<br>";
    if( sqlsrv_query( $connect, $requetesql3))
    {
       echo "Statement executed.\n";
       echo "resultatsql3 != false<br>";
       $ligne3 = sqlsrv_fetch_array($resultatsql3);
    }
    if ($ligne3['Interim'] == true){
        $ListeOperat[]=$VisaDernierUtils." (Intérimaire)";
    }
    elseif ($ligne3['MOI'] == true){
        $ListeOperat[]=$VisaDernierUtils." (MOI)";
    }
    else{
      $ListeOperat[] = $VisaDernierUtils;
    }
  } 
  else
  {
    echo "resultatsql3 = false<br>";
    echo "Error in statement execution.\n";
    $DateDernierUtilsDéco = 0;
    die( print_r( sqlsrv_errors(), true));
  }
}
Comme vous le constatez, j'ai une requêtes multiple, ce qui ne posait aucun problème avec mssql. depuis SQLSRV, j'ai cet erreur :
Citation:
"Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -44 [code] => -44 [2] => The connection cannot process this operation because there is a statement with pending results. To make the connection available for other queries, either fetch all results or cancel or free the statement. For more information, see the product documentation about the MultipleActiveResultSets connection option."
j'ai donc cherché les info concernant le MultipleActiveResultSets, j'ai vu qu'il était pas actif par défaut, ce qui explique que j'ai mis
Code :
"'MultipleActiveResultSets'=> true"
dans mon
.
Malgré ça, mon erreur est toujours présente. quelqu'un aurait une solution, ou quelque chose pour me guider?
Merci!
zimeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h38.


 
 
 
 
Partenaires

Hébergement Web