mssql_next_result

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

mssql_next_result次の結果に内部結果ポインタを移動する

警告

この関数は PHP 7.0.0 で 削除 されました。

この関数の代替として、これらが使えます。

説明

mssql_next_result ( resource $result_id ) : bool

サーバーへ複数の SQL 命令を送信するか複数の結果を有するストアドプロシージャを 実行する場合、この関数はサーバーが複数の結果集合を返すようにします。 この関数は、サーバーから追加の結果が存在するかどうかを調べます。 追加の結果集合が存在する場合、既存の結果集合を解放し、新しい 結果集合から行を取得するための準備を行います。

パラメータ

result_id

処理対象となる結果リソース。これは mssql_query() のコールによって取得します。

返り値

追加の結果集合が取得可能な場合に TRUE、 その他の場合に FALSE を返します。

例1 mssql_next_result() の例

<?php
// MSSQL に接続し、データベースを選択します
$link mssql_connect('MANGO\SQLEXPRESS''sa''phpfi');
mssql_select_db('php'$link);

// クエリを MSSQL に送信します
$sql 'SELECT [name], [age] FROM [php].[dbo].[persons]';
$query mssql_query($sql$link);

// 返されたレコードを順に処理します
do {
    while (
$row mssql_fetch_row($query)) {
        
// レコードの操作 ...
    
}
} while (
mssql_next_result($query));

// 後始末
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
21 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
22 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
16 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