Mssql 函数
在线手册:中文  英文

mssql_fetch_batch

(PHP 4 >= 4.0.4, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_batchReturns the next batch of records

说明

int mssql_fetch_batch ( resource $result )

Returns the next batch of records.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

返回值

Returns the number of rows in the returned batch.

范例

Example #1 mssql_fetch_batch() example

<?php
// Connect to MSSQL and select the database
$link mssql_connect('MANGO\SQLEXPRESS''sa''phpfi');
mssql_select_db('php'$link);

// Send a query
$result mssql_query('SELECT * FROM [php].[dbo].[people]'$link100);
$records 10;

while (
$records >= 0) {
    while (
$row mssql_fetch_assoc($result)) {
        
// Do stuff ...
    
}

    --
$records;
}

if (
$batchsize mssql_fetch_batch($result)) {
    
// $batchsize is the number of records left 
    // in the result, but not shown above
}
?>


Mssql 函数
在线手册:中文  英文

用户评论:

jeffreznik (2013-03-11 23:20:38)

I was having issues doing two different select queries with batch sizes in the same connection. The first one would run fine, the second one would always return one batch + 1 record (ie. batch size on the 2nd query was 250000 records, it would stop after 250001 and say it was complete even though there should have been 3m+ records).
I was able to overcome this by disconnecting from the DB (via mssql_close($conn);) and reconnecting before I ran the second query. Now my second query returns all the records I need.
Though I would write this here as there is little to no documentation on this issue, and it may only be affecting me. I am connecting from Linux (RHEL5) to SQL Server 2005 on the network, using FreeTDS. If you have this same issue, try the above and it may work for you.

doug dot pe at gmail dot com (2012-08-10 17:22:12)

This demonstrates the return value:
<?php
$connect 
mssql_connect("databasename""username""password");
$sql "SELECT * FROM huge_table";    //    returns 3271 rows, for example
$qry mssql_query($SQL$connect1000); // 1000 Rows batchsize
$batchsize mssql_num_rows($qry);
print 
"$batchsize <br />\r\n";
do {
    
$batchsize mssql_fetch_batch($qry);
    print 
"$batchsize <br />\r\n";
} while (
$batchsize);  // get the next batch until end
?>
returns:
1000
1000
1000
271
0

brutalex430 (2010-07-13 13:34:26)

This could be usefull if you have a large dataset:

<?php
$qry 
mssql_query("SELECT * FROM huge_table"$conn1000); // 1000 Rows batchsize

    
do {
      while (
$row mssql_fetch_row($qry)) {
          
// do something like
          
print_r($row);
      }
    } while (
mssql_fetch_batch($navqry));  // get the next batch until end

?>

易百教程