PDOStatement->closeCursor

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

PDOStatement->closeCursorGöstericiyi kapatarak deyimin tekrar çalıştırılabilmesini sağlar

Açıklama

PDOStatement::closeCursor ( void ) : bool

PDOStatement::closeCursor() yöntemi sunucu bağlantısını serbest bırakarak, mevcut deyimin durumunu değiştirmeden tekrar çalıştırılabilmesinin yanında başka SQL deyimlerinin çalıştırılabilmesini de mümkün kılar.

Evvelce çalıştırılmış bir PDOStatement nesnesinden henüz alınmamış satırların olduğu durumda bazı sürücüler bir PDOStatement nesnesinin daha çalıştırılmasına izin vermezler. Bu yöntem bu tür sürücülerde yararlıdır. Sürücünüz böyle bir sürücü ise sorun sıra dışı bir hata olarak kendini gösterir.

PDOStatement::closeCursor() yöntemi ya sürücüye özel isteğe bağlı (azami verimlilikte) bir yöntemdir ya da genel amaçlı bir PDO son çare yöntemidir. Genel amaçlı yöntem aşağıdaki PHP koduna eşdeğer bir işlem yürütür:

<?php
do {
    while (
$stmt->fetch())
        ;
    if (!
$stmt->nextRowset())
        break;
} while (
true);
?>

Dönen Değerler

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

Örnekler

Örnek 1 - PDOStatement::closeCursor() örneği

Aşağıdaki örnekte, $stmt PDOStatement nesnesi çok sayıda satır döndürdüğü halde uygulama sadece ilk satırı almakta ve PDOStatement nesnesini satırları henüz alınmamış durumda bırakmaktadır. Uygulamanın tüm veritabanı sürücüleri ile çalışmasını sağlamak için $stmt veya $otherStmt PDOStatement nesnesi çalıştırılmadan önce bir PDOStatement::closeCursor() çağrısı yapması gerekir.

<?php
/* Bir PDOStatement nesnesi oluşturalım */
$stmt $dbh->prepare('SELECT foo FROM bar');

/* Bir PDOStatement nesnesi daha oluşturalım*/
$otherStmt $dbh->prepare('SELECT foobaz FROM foobar');

/* İlkini çalıştıralım */
$stmt->execute();

/* İlk satırı alalım */
$stmt->fetch();

/* Bazı sürücüler bu çağrıyı gerektirir */
$stmt->closeCursor();

/* Artık ikinci deyimi çalıştırabiliriz */
$otherStmt->execute();
?>

Ayrıca Bakınız