ConFoo 2025

sqlsrv_next_result

(No version information available, might only be in Git)

sqlsrv_next_resultRend actif le prochain résultat de la requête spécifiée

Description

sqlsrv_next_result(resource $stmt): mixed

Rend actif le prochain résultat de la requête spécifiée. Les résultats incluent les jeux de résultats, le nombre de lignes, et les paramètres de sortie.

Liste de paramètres

stmt

La requête sur laquelle le prochain résultat sera appelé.

Valeurs de retour

Retourne true si le prochain résultat a été récupéré avec succès, false si une erreur survient, et null s'il n'y a plus de résultat à récupérer.

Exemples

Exemple #1 Exemple avec sqlsrv_next_result()

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));
}
?>

Voir aussi

add a note

User Contributed Notes 1 note

up
-2
chakin
10 years ago
You can use a for loop to iterate through the results:

If you know how many results there should be it's easier, otherwise you can put a large number in the loop constructor and break when done:

<?
for ($i=0; $i< (Large # or Exact #); $i++)
{
$rows_affected = sqlsrv_rows_affected($q2);
if ($rows_affected === false)
{
echo 'Inserts Failed<br />\n';
} else if ( $rows_affected == -1) {
echo "No information available.<br />\n";
} else {
echo $rows_affected." rows were added.<br />\n";
}

$next_result = sqlsrv_next_result($q2);

if (!$next_result)
{
break;
}
}
?>
To Top