略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: sqlsrv_next_result

2024-12-20

sqlsrv_next_result

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

sqlsrv_next_resultMakes the next result of the specified statement active

说明

sqlsrv_next_result(resource $stmt): mixed

Makes the next result of the specified statement active. Results include result sets, row counts, and output parameters.

参数

stmt

The statement on which the next result is being called.

返回值

Returns true if the next result was successfully retrieved, false if an error occurred, and null if there are no more results to retrieve.

范例

示例 #1 sqlsrv_next_result() example

The following example executes a batch query that inserts into a table and then selects from the table. This produces two results on the statement: one for the rows affected by the INSERT and one for the rows returned by the SELECT. To get to the rows returned by the SELECT, sqlsrv_next_result() must be called to move past the first 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);

// Consume the first result (rows affected by INSERT) without calling sqlsrv_next_result.
echo "Rows affected: ".sqlsrv_rows_affected($stmt)."<br />";

// Move to the next result and display results.
$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 
"No more results.<br />";
} else {
     die(
print_r(sqlsrv_errors(), true));
}
?>

参见

add a noteadd a note

User Contributed Notes 1 note

up
-1
chakin
8 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;
    }
}
?>

官方地址:https://www.php.net/manual/en/function.sqlsrv-next-result.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3