Signatur
Beschreibung
mysqli_close() beendet die Verbindung zum MySQL-Datenbankserver, die zuvor mit mysqli_connect() oder new mysqli() aufgebaut wurde. Nach dem Aufruf ist das Verbindungs-Objekt nicht mehr verwendbar und alle laufenden Transaktionen werden abgebrochen, ohne dass ein Commit erfolgt.
In den meisten Anwendungsszenarien ist ein expliziter Aufruf von mysqli_close() nicht zwingend notwendig, da PHP am Ende eines Skripts alle offenen Verbindungen automatisch schließt. Sinnvoll ist der explizite Aufruf jedoch bei langlaufenden Skripten, wenn die Verbindung möglichst früh freigegeben werden soll, oder wenn in einem Skript viele verschiedene Verbindungen nacheinander geöffnet werden, um Ressourcenengpässe zu vermeiden.
Bei persistenten Verbindungen, die mit mysqli_connect('p:host', ...) angelegt wurden, schließt mysqli_close() die Verbindung nicht wirklich, sondern gibt sie lediglich an den Verbindungs-Pool zurück. Das ist ein häufig übersehenes Verhalten, das bei der Fehlerdiagnose berücksichtigt werden sollte.
In objektorientiertem Code steht die Methode $mysqli->close() zur Verfügung, die identisch funktioniert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $mysql Pflicht | mysqli | Das mysqli-Verbindungsobjekt, das durch mysqli_connect() oder new mysqli() erzeugt wurde und geschlossen werden soll. |
Rückgabewert
true zurück, wenn die Verbindung erfolgreich geschlossen wurde. Bei einem Fehler wird false zurückgegeben.Beispiele
Verbindung prozedural öffnen und schließen
<?php
$mysqli = mysqli_connect('localhost', 'benutzer', 'geheim', 'meinedb');
if (!$mysqli) {
die('Verbindung fehlgeschlagen: ' . mysqli_connect_error());
}
// Datenbankoperationen durchführen
$result = mysqli_query($mysqli, 'SELECT COUNT(*) AS anzahl FROM produkte');
$row = mysqli_fetch_assoc($result);
echo 'Anzahl Produkte: ' . $row['anzahl'];
// Verbindung explizit schließen
mysqli_close($mysqli);
echo PHP_EOL . 'Verbindung geschlossen.';
Objektorientierte Verwendung mit close()
<?php
$mysqli = new mysqli('localhost', 'benutzer', 'geheim', 'meinedb');
if ($mysqli->connect_errno) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
$stmt = $mysqli->prepare('SELECT name FROM kunden WHERE id = ?');
$stmt->bind_param('i', $id);
$id = 5;
$stmt->execute();
$stmt->bind_result($name);
$stmt->fetch();
echo 'Kundenname: ' . $name;
$stmt->close();
$mysqli->close(); // Verbindung freigeben
// Wichtig · Fallstricke
Persistente Verbindungen: Bei Verbindungen, die mit dem Präfix p: (z. B. mysqli_connect('p:localhost', ...)) als persistent angelegt wurden, gibt mysqli_close() die Verbindung lediglich an den internen Verbindungs-Pool zurück, anstatt sie wirklich zu schließen. Laufende Transaktionen werden dabei zwar zurückgerollt, die TCP-Verbindung zum Server bleibt aber bestehen.
Verwendung nach close(): Nach dem Aufruf von mysqli_close() darf das Verbindungsobjekt nicht mehr verwendet werden. Jeder weitere Zugriff führt zu einem Fehler. Es empfiehlt sich, die Variable anschließend auf null zu setzen, um versehentliche Zugriffe zu verhindern.
Automatisches Schließen: PHP schließt alle offenen Datenbankverbindungen automatisch am Skript-Ende, weshalb mysqli_close() in kurzen Web-Skripten oft weggelassen wird. In CLI-Skripten oder Anwendungen mit hohem Verbindungsaufkommen ist ein explizites Schließen jedoch empfehlenswert.