Signatur
Beschreibung
db2_close() schließt eine Datenbankverbindung, die zuvor mit db2_connect() geöffnet wurde. Nach dem Aufruf ist die übergebene Verbindungsressource ungültig und darf nicht mehr für weitere Datenbankoperationen verwendet werden. Alle noch offenen Anweisungen (statements), die zu dieser Verbindung gehören, werden dabei ebenfalls beendet.
Die Funktion ist ausschließlich für nicht-persistente Verbindungen gedacht, die mit db2_connect() erzeugt wurden. Auf persistente Verbindungen, die mit db2_pconnect() erstellt wurden, hat db2_close() keine Wirkung – diese werden am Ende des Skripts automatisch in den Verbindungspool zurückgegeben.
Es empfiehlt sich, Verbindungen explizit zu schließen, sobald sie nicht mehr benötigt werden, um Datenbankressourcen auf dem Server so früh wie möglich freizugeben – insbesondere in lang laufenden Skripten oder bei hoher Parallelnutzung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection Pflicht | resource | Eine gültige DB2-Verbindungsressource, die von db2_connect() zurückgegeben wurde. |
Rückgabewert
true zurück, wenn die Verbindung erfolgreich geschlossen wurde, oder false bei einem Fehler (z. B. wenn die übergebene Ressource keine gültige DB2-Verbindung ist).Beispiele
Verbindung öffnen, abfragen und explizit schließen
<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'geheimesPasswort');
if ($conn) {
$sql = 'SELECT NAME FROM STAFF WHERE DEPT = 20';
$stmt = db2_exec($conn, $sql);
while ($row = db2_fetch_assoc($stmt)) {
echo $row['NAME'] . PHP_EOL;
}
// Verbindung nach Nutzung explizit freigeben
$result = db2_close($conn);
echo $result ? 'Verbindung geschlossen.' : 'Fehler beim Schließen.';
} else {
echo 'Verbindung fehlgeschlagen: ' . db2_conn_errormsg();
}
?>
Kein Effekt auf persistente Verbindungen
<?php
// Persistente Verbindung – db2_close() hat hier KEINE Wirkung
$pconn = db2_pconnect('SAMPLE', 'db2inst1', 'geheimesPasswort');
if ($pconn) {
// db2_close() gibt false zurück bei persistenten Verbindungen
$closed = db2_close($pconn);
echo $closed ? 'Geschlossen.' : 'Persistente Verbindung kann nicht manuell geschlossen werden.';
}
?>
// Wichtig · Fallstricke
Hinweis zur persistenten Verbindung: db2_close() wirkt nicht auf Verbindungen, die mit db2_pconnect() erzeugt wurden. Solche Verbindungen werden intern im Pool gehalten und beim nächsten passenden Verbindungsaufruf wiederverwendet.
Ressourcenverwaltung: Nach dem Aufruf von db2_close() sollte die Verbindungsvariable nicht weiter verwendet werden. Jeder nachfolgende Aufruf mit dieser Ressource führt zu einem Fehler oder gibt false zurück.
Transaktion: Wenn beim Schließen der Verbindung noch eine nicht abgeschlossene Transaktion offen ist, wird diese automatisch zurückgerollt (ROLLBACK).