PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

PDOStatement->rowCount> <PDOStatement->getColumnMeta
Last updated: Fri, 10 Oct 2008

view this page in

PDOStatement->nextRowset

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

PDOStatement->nextRowset 複数の行セットを返す文ハンドラで次の行セットに移動する

説明

bool PDOStatement::nextRowset ( void )

いくつかのデータベースサーバは、1つ以上の行セット (結果セットとしても知られる) を返すストアドプロシージャをサポートしています。 PDOStatement::nextRowSet() により、2 番目以降の PDOStatement オブジェクトに関連する行セットにアクセスすることができます。 それぞれの行セットは、 前の行セットと異なるカラムセットを含むことができます。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 ストアドプロシージャから複数の行セットをフェッチする

以下のサンプルは、3つの行セットを返すストアドプロシージャの コールの仕方を示しています。 PDOStatement::nextRowset() を併用した do / while ループを使用しており、行セットが返されなくなったとき false を返しループを終了します。

<?php
$sql 
'CALL multiple_rowsets()';
$stmt $conn->query($sql);
$i 1;
do {
    
$rowset $stmt->fetch(PDO::FETCH_NUM);
    if (
$rowset) {
        
printResultSet($rowset$i);
    }
    
$i++;
} while (
$stmt->nextRowset());

function 
printResultSet(&$rowset$i) {
    print 
"Result set $i:\n";
    foreach (
$rowset as $row) {
        foreach (
$row as $col) {
            print 
$col "\t";
        }
        print 
"\n";
    }
    print 
"\n";
}
?>

上の例の出力は以下となります。

Result set 1:
apple    red
banana   yellow

Result set 2:
orange   orange    150
banana   yellow    175

Result set 3:
lime     green
apple    red
banana   yellow



add a note add a note User Contributed Notes
PDOStatement->nextRowset
dev at NOSPAMbcdiv dot com
24-Jan-2008 03:20
Unfortunately nextRowset() apparently is not implemented in PHP 5.2.5*  -- returns "SQLSTATE[HYC00]: Optional feature not implemented".

So stored procedures returning multiple recordsets only return the first recordset. Using nextRowset() to move to the next recordset only returns the optional feature error above.

Hopefully this will save someone else from spinning their wheels for days trying to find a way to get it to work -- apparently it doesn't yet and several bugs remain open relating to the nextRowset() PDO feature.

*w/ This Environment:
Apache 2.0.61 (Win32), PHP 5.2.5, PDO Driver for MySQL client library version 5.0.45, MySQL 5.0.45

PDOStatement->rowCount> <PDOStatement->getColumnMeta
Last updated: Fri, 10 Oct 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites