PDOStatement->nextRowset

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDOStatement->nextRowsetÇok satır kümeli bir sonuçtaki sonraki satır kümesini geçerli satır kümesi yapar

Açıklama

bool PDOStatement::nextRowset ( void )

Bazı veritabanları birden fazla satır kümesi (sonuç kümesi diye de bilinir) döndüren kayıtlı yordamları destekler. PDOStatement::nextRowset() yordamını kullaranak bir PDOStatement nesnesi ile ilişkili satır kümelerinin ikincisine ve sırayla sonraki satır kümelerine erişebilirsiniz. Her satır kümesi diğerlerinden farklı sütunlardan oluşabilir.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Örnekler

Örnek 1 - Bir kayıtlı yordamdan dönen çok sayıda satır kümesine erişim

Aşağıdaki örnekte üç satır kümesi döndüren bir kayıtlı yordam çağrısının yapılışı gösterilmiştir. Döndürülecek satır kümesi kalmayınca FALSE döndüren PDOStatement::nextRowset() yönteminin bu özelliğini bir do / while döngüsünde kullanabiliriz.

<?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 
"$i. sonuç kümesi:\n";
    foreach (
$rowset as $row) {
        foreach (
$row as $col) {
            print 
$col "\t";
        }
        print 
"\n";
    }
    print 
"\n";
}
?>

Yukarıdaki örneğin çıktısı:

1. sonuç kümesi:
apple    red
banana   yellow

2. sonuç kümesi:
orange   orange    150
banana   yellow    175

3. sonuç kümesi:
lime     green
apple    red
banana   yellow

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

up
2
et dot coder at gmail dot com
3 years ago
on MSSQL and 'dsn' => 'dblib:...',:
If you know how many count rowset then don't use contruction of do..while.

<?php
do {
   
$pdoStatement->fetchAll(\PDO::FETCH_ASSOC);
} while (
   
$pdoStatement->nextRowset()
);
?>
When I get large fetchAll(over 30) for second nextRowset. I get error - Segmentation fault.

Uses step-by-step insted do..while is fix for this bug:
<?php
$pdoStatement
->fetchAll(\PDO::FETCH_ASSOC);
$pdoStatement->nextRowset();
$pdoStatement->fetchAll(\PDO::FETCH_ASSOC);
?>
up
1
guilleamathews at gmail dot com
6 years ago
PDO::nextRowset() does not appear to be currently supported by the Firebird PDO driver. Unfortunate.
up
0
alex at 1stleg dot com
1 year ago
If you use PDO::fetch instead of PDO::fetchAll and do not reach the end the result set, PDO::nextRowset() will fail with "SQLSTATE[HY000]: General error: PDO_DBLIB: dbresults() returned FAIL."
To Top