mssql_next_result
(PHP 4 >= 4.0.5, PHP 5, PECL odbtp >= 1.1.1)
mssql_next_result — Move the internal result pointer to the next result
Description
$result_id
)When sending more than one SQL statement to the server or executing a stored procedure with multiple results, it will cause the server to return multiple result sets. This function will test for additional results available form the server. If an additional result set exists it will free the existing result set and prepare to fetch the rows from the new result set.
Parameters
-
result_id
-
The result resource that is being evaluated. This result comes from a call to mssql_query().
Return Values
Returns TRUE
if an additional result set was available or FALSE
otherwise.
Examples
Example #1 mssql_next_result() example
<?php
// Connect to MSSQL and select the database
$link = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);
// Send a query to MSSQL
$sql = 'SELECT [name], [age] FROM [php].[dbo].[persons]';
$query = mssql_query($sql, $link);
// Iterate through returned records
do {
while ($row = mssql_fetch_row($query)) {
// Handle record ...
}
} while (mssql_next_result($query));
// Clean up
mssql_free_result($query);
mssql_close($link);
?>
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- Microsoft SQL Server
- mssql_bind
- mssql_close
- mssql_connect
- mssql_data_seek
- mssql_execute
- mssql_fetch_array
- mssql_fetch_assoc
- mssql_fetch_batch
- mssql_fetch_field
- mssql_fetch_object
- mssql_fetch_row
- mssql_field_length
- mssql_field_name
- mssql_field_seek
- mssql_field_type
- mssql_free_result
- mssql_free_statement
- mssql_get_last_message
- mssql_guid_string
- mssql_init
- mssql_min_error_severity
- mssql_min_message_severity
- mssql_next_result
- mssql_num_fields
- mssql_num_rows
- mssql_pconnect
- mssql_query
- mssql_result
- mssql_rows_affected
- mssql_select_db
Коментарии
This function does not exist as a Sybase (Sybase-CT) alias, so if you have PHP+FreeTDS||Sybase as a MSSQL client on Unix platform, it will not work.
It seems that mssql_next_result does not work with result sets returned by stored procedures.
you cant return multiple values from store proc but you can return multiple resultset, so you can use mssql_next_result()
eg..
$stmt = mssql_init("AuthLoginUser", $objDBH);
mssql_bind($stmt,"@LoginUser",$LoginUser,SQLVARCHAR);
mssql_bind($stmt,"@Password",$strNewPassword,SQLVARCHAR);
mssql_bind($stmt,"@SessionId",$SessionId,SQLVARCHAR);
//mssql_bind($stmt,"@ReturnVal",$ReturnVal,SQLVARCHAR,True);
$rs=mssql_execute($stmt);
do {
while ($row = mssql_fetch_row($rs)) {
echo "$row[0] -- $row[1]<BR>";
}
} while (mssql_next_result($rs));
mssql_free_result($rs);
When retrieving multiple resultsets from a stored procedure, don't call mssql_free_statement on the statement resource, as any resultsets not yet retrieved will be lost, and mssql_next_result will report no more result sets were available.
As of today, this function is defined in FreeTDS (at least in the CVS version) and works perfectly with stored procedures.
Useful to avoid outer joins.