PHP 8.4.0 RC4 available for testing

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( $stmt, SQLSRV_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

Добавить

Примечания пользователей 1 note

up
0
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