mssql_next_result

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

mssql_next_resultMover el puntero interno del resultado al siguiente resultado

Advertencia

Esta función está OBSOLETA en PHP 7.0.0.

Las alternativas a esta función son:

Descripción

mssql_next_result ( resource $result_id ) : bool

Al enviar más de una instrucción SQL en el servidor o ejecutar un procedimiento almacenado con varios resultados, causará que el servidor devuelva varios conjuntos de resultados. Esta función pondrá a prueba de forma disponible resultados adicionales del servidor. Si existe un conjunto de resultados adicional será liberado el conjunto de resultados existentes y preparado para recuperar las filas del nuevo conjunto de resultados.

Parámetros

result_id

El recurso de resultado que se está evaluando. Este resultado proviene de una llamada a mssql_query().

Valores devueltos

Devuelve TRUE si dispone de un conjunto de resultados adicional o FALSE en caso contrario.

Ejemplos

Ejemplo #1 Ejemplo de mssql_next_result()

<?php
// Conectar a MSSQL y seleccionar la base de datos
$link mssql_connect('MANGO\SQLEXPRESS''sa''phpfi');
mssql_select_db('php'$link);

// Enviar una consulta a MSSQL
$sql 'SELECT [name], [age] FROM [php].[dbo].[persons]';
$query mssql_query($sql$link);

// Iterar a través de registros devueltos
do {
    while (
$row mssql_fetch_row($query)) {
        
// Manejar registros ...
    
}
} while (
mssql_next_result($query));

// Liberar
mssql_free_result($query);
mssql_close($link);
?>

add a note add a note

User Contributed Notes 5 notes

up
1
il cartolaio
14 years ago
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.
up
1
mail_umesh at yahoo dot com
20 years ago
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);
up
1
m1tk4 at hotmail dot com
22 years ago
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.
up
1
gagarin[at]i-dep.com
21 years ago
It seems that mssql_next_result does not work with result sets returned by stored procedures.
up
0
itsacon at itsacon dot net
15 years ago
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.
To Top