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 :
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 :
"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
"'MultipleActiveResultSets'=> true"
dans mon
.
Malgré ça, mon erreur est toujours présente. quelqu'un aurait une solution, ou quelque chose pour me guider?
Merci!
Partager