Start · Sprachen · PHP · Referenz · odbc_close

odbc_close

Funktion

Schließt eine geöffnete ODBC-Verbindung und gibt die zugehörigen Ressourcen frei.

seit PHP 4.0.0 Kategorie: db

Signatur

odbc_close(resource $odbc): void

Beschreibung

odbc_close() beendet eine bestehende ODBC-Datenbankverbindung, die zuvor mit odbc_connect() oder odbc_pconnect() geöffnet wurde. Nach dem Aufruf ist das übergebene Verbindungs-Handle ungültig und darf nicht mehr verwendet werden.

Die Funktion ist besonders wichtig in lang laufenden Skripten oder bei der Verwaltung mehrerer gleichzeitiger Datenbankverbindungen, um Ressourcen auf dem Datenbankserver und im PHP-Prozess gezielt freizugeben, anstatt auf das automatische Aufräumen am Skriptende zu warten.

Achtung bei persistenten Verbindungen: Wird eine mit odbc_pconnect() geöffnete persistente Verbindung übergeben, hat odbc_close() keine Wirkung – persistente Verbindungen bleiben über das Skriptende hinaus bestehen und können nicht manuell geschlossen werden.

Existieren noch offene Ergebnis-Handles (Result-Sets), die auf die Verbindung verweisen, sollte man diese zuvor mit odbc_free_result() freigeben, um unerwartetes Verhalten zu vermeiden.

Parameter

Name Typ Default Beschreibung
$odbc Pflicht resource Eine gültige ODBC-Verbindungsressource, wie sie von odbc_connect() oder odbc_pconnect() zurückgegeben wird.

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

Beispiele

Einfache Verbindung öffnen und schließen

<?php
$dsn  = 'MyDSN';
$user = 'db_user';
$pass = 'geheimes_passwort';

$conn = odbc_connect($dsn, $user, $pass);

if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}

// Datenbankoperationen durchführen
$result = odbc_exec($conn, 'SELECT id, name FROM kunden LIMIT 5');

while ($row = odbc_fetch_array($result)) {
    echo $row['id'] . ': ' . $row['name'] . PHP_EOL;
}

// Ergebnis-Handle freigeben
odbc_free_result($result);

// Verbindung schließen
odbc_close($conn);
echo 'Verbindung erfolgreich geschlossen.';
?>
1: Mustermann 2: Musterfrau Verbindung erfolgreich geschlossen.

Verbindung mit Fehlerbehandlung und garantiertem Schließen

<?php
$conn = odbc_connect('MeinDSN', 'user', 'pass');

if (!$conn) {
    die('Keine Verbindung möglich.');
}

try {
    $result = odbc_exec($conn, 'SELECT COUNT(*) AS anzahl FROM bestellungen');

    if ($result === false) {
        throw new RuntimeException('Abfragefehler: ' . odbc_errormsg($conn));
    }

    $row = odbc_fetch_array($result);
    echo 'Anzahl Bestellungen: ' . $row['anzahl'] . PHP_EOL;

    odbc_free_result($result);
} catch (RuntimeException $e) {
    echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
} finally {
    // Verbindung in jedem Fall schließen
    odbc_close($conn);
    echo 'Verbindung geschlossen.' . PHP_EOL;
}
?>
Anzahl Bestellungen: 42 Verbindung geschlossen.

// Wichtig · Fallstricke

Persistente Verbindungen: Bei Verbindungen, die mit odbc_pconnect() erstellt wurden, ist odbc_close() wirkungslos. Persistente Verbindungen werden vom Web-Server-Prozess verwaltet und bleiben über mehrere Anfragen hinweg aktiv.

Offene Result-Sets: Wenn noch Ergebnis-Handles existieren, die auf die Verbindung verweisen, kann das Schließen der Verbindung zu unvorhersehbarem Verhalten führen. Immer erst odbc_free_result() aufrufen, dann odbc_close().

Automatisches Schließen: PHP schließt alle offenen Nicht-persistenten Verbindungen automatisch am Ende der Skriptausführung. Ein expliziter Aufruf von odbc_close() ist dennoch empfehlenswert, um Ressourcen sofort freizugeben – insbesondere bei Skripten, die viele oder lang laufende Verbindungen verwalten.