sqlsrv_next_result

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

sqlsrv_next_resultActiva el siguiente resultado de la consulta especificada

Descripción

sqlsrv_next_result(resource $stmt): mixed

Activa el siguiente resultado de la consulta especificada. Los resultados incluyen los conjuntos de resultados, el número de filas y los parámetros de salida.

Parámetros

stmt

La consulta sobre la cual se llamará el siguiente resultado.

Valores devueltos

Devuelve true si el siguiente resultado ha sido recuperado con éxito, false si ocurre un error, y null si no hay más resultados para recuperar.

Ejemplos

Ejemplo #1 Ejemplo con sqlsrv_next_result()

El siguiente ejemplo ejecuta una consulta batch que realiza inserciones en una tabla y luego realiza una selección de la tabla. Esto produce 2 resultados en la consulta: uno para las filas afectadas por el INSERT, y otro para las filas devueltas por el SELECT. Para recuperar las filas devueltas por el SELECT, la función sqlsrv_next_result() debe ser llamada para pasar el primer resultado.

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

// Consume el primer resultado (filas afectadas por el INSERT) sin llamar a la función sqlsrv_next_result.
echo "Filas afectadas : ".sqlsrv_rows_affected($stmt)."<br />";

// Se mueve al siguiente resultado y muestra los resultados.
$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
"No hay más resultados.<br />";
} else {
die(
print_r(sqlsrv_errors(), true));
}
?>

Ver también

add a note

User Contributed Notes 1 note

up
-2
chakin
11 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