Start · Sprachen · PHP · Referenz · ocifreestatement

ocifreestatement

Funktion

Veralteter Alias von <code>oci_free_statement()</code> — gibt alle Ressourcen frei, die einer OCI8-Anweisung zugeordnet sind.

seit PHP 5.0.0 Kategorie: db

Signatur

ocifreestatement(resource $statement): bool

Beschreibung

ocifreestatement() ist ein veralteter Alias der Funktion oci_free_statement() und wird seit PHP 5 nicht mehr empfohlen. Die Funktion gibt alle Ressourcen frei, die dem übergebenen OCI8-Statement-Handle zugeordnet sind, und schließt damit die mit oci_parse() erzeugte Anweisung.

Sobald ein SQL-Statement ausgeführt und die Ergebnisse verarbeitet wurden, sollte die zugehörige Ressource explizit freigegeben werden, um den Speicherverbrauch zu reduzieren und Datenbankverbindungen nicht unnötig zu belasten. Intern ruft ocifreestatement() lediglich oci_free_statement() auf.

In modernen PHP-Projekten sollte stets oci_free_statement() verwendet werden, da der Alias ocifreestatement() in zukünftigen PHP-Versionen entfernt werden könnte. Das explizite Freigeben von Statements ist besonders in Schleifen oder bei der Verarbeitung vieler Abfragen wichtig, um Ressourcenlecks zu vermeiden.

Parameter

Name Typ Default Beschreibung
$statement Pflicht resource Ein gültiges OCI8-Statement-Handle, wie es von oci_parse() oder oci_new_cursor() zurückgegeben wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Ressource erfolgreich freigegeben wurde, andernfalls false.

Beispiele

Einfaches Ausführen und Freigeben eines OCI8-Statements

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');

if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

$sql = 'SELECT vorname, nachname FROM kunden WHERE id = :id';
$stmt = oci_parse($conn, $sql);

$id = 42;
oci_bind_by_name($stmt, ':id', $id);
oci_execute($stmt);

while ($row = oci_fetch_assoc($stmt)) {
    echo $row['VORNAME'] . ' ' . $row['NACHNAME'] . PHP_EOL;
}

// Veralteter Alias — besser oci_free_statement() verwenden
ocifreestatement($stmt);
oci_close($conn);
?>
Max Mustermann

Mehrere Statements in einer Schleife freigeben

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');

$ids = [1, 2, 3];
foreach ($ids as $id) {
    $stmt = oci_parse($conn, 'SELECT name FROM produkte WHERE id = :id');
    oci_bind_by_name($stmt, ':id', $id);
    oci_execute($stmt);

    while ($row = oci_fetch_assoc($stmt)) {
        echo 'Produkt: ' . $row['NAME'] . PHP_EOL;
    }

    // Statement nach jedem Schleifendurchlauf freigeben
    ocifreestatement($stmt);
}

oci_close($conn);
?>
Produkt: Apfel Produkt: Birne Produkt: Kirsche

// Wichtig · Fallstricke

Deprecation-Hinweis: ocifreestatement() ist ein veralteter Alias und sollte in neuem Code nicht mehr verwendet werden. Nutzen Sie stattdessen oci_free_statement(). Der Alias könnte in einer zukünftigen PHP-Version ohne Vorwarnung entfernt werden.

Das explizite Freigeben von Statement-Ressourcen ist besonders wichtig, wenn viele Abfragen in einer Schleife ausgeführt werden, da PHP OCI8-Ressourcen nicht automatisch nach jedem Schleifendurchlauf freigibt. Unterlassenes Freigeben kann zu erhöhtem Speicherverbrauch und im schlimmsten Fall zu erschöpften Datenbankverbindungen führen.