PDOStatement::closeCursor

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

PDOStatement::closeCursor Schließt den Cursor, damit die Anweisung erneut ausgeführt werden kann

Beschreibung

publicPDOStatement::closeCursor(): bool

PDOStatement::closeCursor() gibt die Verbindung zum Server frei, damit andere SQL-Anweisungen ausgeführt werden können, belässt die Anweisung aber in einem Zustand, in dem sie erneut ausgeführt werden kann.

Diese Methode ist nützlich für Datenbanktreiber, die die Ausführung eines PDOStatement-Objekts nicht unterstützen, wenn ein zuvor ausgeführtes PDOStatement-Objekt noch nicht abgrufene Zeilen enthält. Wenn der Datenbanktreiber diese Einschränkung aufweist, kann es zu einem Out-of-Sequence-Fehler kommen.

PDOStatement::closeCursor() ist entweder als optionale treiberspezifische Methode implementiert (für maximale Effizienz), oder als generischer PDO-Fallback, wenn keine treiberspezifische Funktion installiert ist. Der generische PDO-Fallback ist semantisch dasselbe wie der folgende Code in einem PHP-Skript:

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

Parameter-Liste

Diese Funktion besitzt keine Parameter.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Fehler/Exceptions

Gibt einen Fehler der Stufe E_WARNING aus, wenn das Attribut PDO::ATTR_ERRMODE auf PDO::ERRMODE_WARNING gesetzt ist.

Löst eine PDOException aus, wenn das Attribut PDO::ATTR_ERRMODE auf PDO::ERRMODE_EXCEPTION gesetzt ist.

Beispiele

Beispiel #1 PDOStatement::closeCursor()-Beispiel

Im folgenden Beispiel gibt das PDOStatement-Objekt $stmt mehrere Zeilen zurück, aber die Anwendung ruft nur die erste Zeile ab, wodurch das PDOStatement-Objekt in einem Zustand mit nicht abgerufenen Zeilen verbleibt. Um sicherzustellen, dass die Anwendung mit allen Datenbanktreibern funktioniert, wird hier PDOStatement::closeCursor() für $stmt aufgerufen, bevor das PDOStatement-Objekt $otherStmt ausgeführt wird.

<?php

$stmt = $dbh->prepare('SELECT foo FROM bar');


$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');


$stmt->execute();


$stmt->fetch();


$stmt->closeCursor();


$otherStmt->execute();
?>

Siehe auch

To Top