sqlsrv_next_result

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

sqlsrv_next_resultДелает активным следующий результат указанного оператора

Описание

sqlsrv_next_result(resource $stmt): mixed

Делает активным следующий результат указанного оператора. Результаты включают наборы результатов, количество строк и выходные параметры.

Список параметров

stmt

Оператор, по которому вызывается следующий результат.

Возвращаемые значения

Возвращает true, если следующий результат был успешно получен, false, если произошла ошибка и null, если результатов для получения больше нет.

Примеры

Пример #1 Пример использования sqlsrv_next_result()

В следующем примере выполняется пакетный запрос, который добавляет записи в таблицу, а затем выбирает данные из таблицы. Это даёт два результата оператора: один для строк, на которые влияет INSERT, и один для строк, возвращаемых SELECT. Чтобы перейти к строкам, возвращаемым SELECT, необходимо вызвать sqlsrv_next_result(), чтобы пройти мимо первого результата.

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

// Использовать первый результат (строки, затронутые INSERT) без вызова sqlsrv_next_result.
echo "Затронуто строк: ".sqlsrv_rows_affected($stmt)."<br />";

// Переход к следующему результату и отображение результатов.
$next_result sqlsrv_next_result($stmt);
if( 
$next_result ) {
   while( 
$row sqlsrv_fetch_array$stmtSQLSRV_FETCH_ASSOC)){
      echo 
$row['id'].": ".$row['data']."<br />";
   }
} elseif( 
is_null($next_result)) {
     echo 
"Больше строк нет.<br />";
} else {
     die(
print_r(sqlsrv_errors(), true));
}
?>

Смотрите также

  • sqlsrv_query() - Подготавливает и выполняет запрос
  • sqlsrv_fetch_array() - Возвращает строку как массив
  • sqlsrv_rows_affected() - Возвращает количество строк, изменённых последним выполненным запросом INSERT, UPDATE или DELETE

add a note add a note

User Contributed Notes 1 note

up
-1
chakin
7 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