L'exemple suivant exécute une requête batch qui fait des insertions
dans une table, puis, fait une sélection de la table. Ceci produit
2 résultats sur la requête : un pour les lignes affectées par le INSERT,
et un pour les lignes retournées par le SELECT. Pour récupérer les lignes
retournées par le SELECT, la fonction sqlsrv_next_result()
doit être appelée pour passer le premier résultat.
<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array("Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$query = "INSERT INTO Table_1 (id, data) VALUES (?,?); SELECT * FROM TABLE_1;";
$params = array(1, "some data");
$stmt = sqlsrv_query($conn, $query, $params);
// Consomme le premier résultat (lignes affectées par le INSERT) sans appeler la fonction sqlsrv_next_result.
echo "Lignes affectées : ".sqlsrv_rows_affected($stmt)."<br />";
// Se déplace au résultat suivant et affiche les résultats.
$next_result = sqlsrv_next_result($stmt);
if( $next_result ) {
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
echo $row['id']." : ".$row['data']."<br />";
}
} elseif( is_null($next_result)) {
echo "Il n'y a plus de résultat.<br />";
} else {
die(print_r(sqlsrv_errors(), true));
}
?>