PHPCon Poland 2024

sqlsrv_next_result

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

sqlsrv_next_resultTorna o próximo resultado da declaração especificada ativo

Descrição

sqlsrv_next_result(resource $stmt): mixed

Torna o próximo resultado da declaração especificada ativo. Os resultados incluem conjuntos de resultados, contagens de linhas e parâmetros de saída.

Parâmetros

stmt

A declaração na qual o próximo resultado está sendo chamado.

Valor Retornado

Retorna true se o próximo resultado foi obtido com sucesso, false se ocorrer um erro e null se não houver mais resultados para recuperar.

Exemplos

Exemplo #1 Exemplo de sqlsrv_next_result()

O exemplo a seguir executa uma consulta em lote que insere em uma tabela e depois seleciona da tabela. Isso produz dois resultados na declaração: um para as linhas afetadas pela INSERT e outro para as linhas retornadas pela SELECT. Para chegar às linhas retornadas pela SELECT, é necessário chamar sqlsrv_next_result() para passar pelo primeiro 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);

// Consome o primeiro resultado (linhas afetadas por INSERT) sem chamar sqlsrv_next_result.
echo "Rows affected: ".sqlsrv_rows_affected($stmt)."<br />";

// Move para o próximo resultado e exibe os 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 more results.<br />";
} else {
die(
print_r(sqlsrv_errors(), true));
}
?>

Veja Também

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