PDOStatement::closeCursor
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)
PDOStatement::closeCursor — Göstericiyi kapatarak deyimin tekrar çalıştırılabilmesini sağlar
Açıklama
public
PDOStatement::closeCursor():
bool
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);
?>
Bağımsız Değişkenler
Bu işlevin bağımsız değişkeni yoktur.
Dönen Değerler
Başarı durumunda true
, başarısızlık durumunda false
döner.
Hatalar/İstisnalar
PDO::ATTR_ERRMODE
özniteliğine
PDO::ERRMODE_WARNING
atanırsa
E_WARNING
düzeyinde bir hata çıktılanır.
PDO::ATTR_ERRMODE
özniteliğine
PDO::ERRMODE_EXCEPTION
atanırsa
PDOException istisnası oluşur.
Ö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();
?>