Signatur
Beschreibung
sqlsrv_close() beendet die Verbindung zum Microsoft SQL Server, die zuvor mit sqlsrv_connect() geöffnet wurde, und gibt alle intern belegten Ressourcen (Speicher, Netzwerk-Handles usw.) frei. Nach dem Aufruf ist die übergebene Verbindungsressource ungültig und kann nicht mehr verwendet werden.
Die Funktion sollte immer aufgerufen werden, sobald eine Datenbankverbindung nicht mehr benötigt wird – insbesondere in lang laufenden Skripten oder in Anwendungen, die viele Verbindungen öffnen. Wird sqlsrv_close() nicht explizit aufgerufen, schließt PHP die Verbindung am Ende des Skripts automatisch; ein expliziter Aufruf ist dennoch Best Practice, um Ressourcen frühzeitig freizugeben.
Ausstehende Anweisungen (Statements), die noch nicht geschlossen wurden, werden durch den Aufruf ebenfalls automatisch freigegeben. Parallel geöffnete Verbindungen bleiben davon unberührt und müssen separat geschlossen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn Pflicht | resource | Die SQLSRV-Verbindungsressource, die mit sqlsrv_connect() erstellt wurde und geschlossen werden soll. |
Rückgabewert
true zurück, wenn die Verbindung erfolgreich geschlossen wurde. Gibt false zurück, wenn ein Fehler aufgetreten ist – z. B. wenn eine ungültige Ressource übergeben wurde.Beispiele
Einfaches Öffnen und Schließen einer SQLSRV-Verbindung
<?php
$serverName = "localhost";
$connectionOptions = [
"Database" => "meine_datenbank",
"Uid" => "db_benutzer",
"PWD" => "geheimes_passwort",
];
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
echo "Verbindung fehlgeschlagen.";
print_r(sqlsrv_errors());
exit;
}
echo "Verbindung erfolgreich hergestellt.\n";
// ... Datenbankoperationen ...
$result = sqlsrv_close($conn);
if ($result) {
echo "Verbindung erfolgreich geschlossen.\n";
} else {
echo "Fehler beim Schließen der Verbindung.\n";
print_r(sqlsrv_errors());
}
Verbindung schließen nach Abfrage-Ausführung
<?php
$serverName = "localhost";
$connectionOptions = [
"Database" => "meine_datenbank",
"Uid" => "db_benutzer",
"PWD" => "geheimes_passwort",
];
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
die("Verbindungsfehler: " . print_r(sqlsrv_errors(), true));
}
$sql = "SELECT TOP 5 id, name FROM kunden ORDER BY name";
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
sqlsrv_close($conn);
die("Abfragefehler: " . print_r(sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo $row['id'] . " - " . $row['name'] . "\n";
}
// Statement zuerst freigeben, dann Verbindung schließen
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
echo "Fertig.\n";
// Wichtig · Fallstricke
Ressourcenverwaltung: Auch wenn PHP am Script-Ende alle Ressourcen automatisch freigibt, sollte sqlsrv_close() in produktiven Anwendungen stets explizit aufgerufen werden – vor allem in Schleifen oder bei mehreren Verbindungen, um Erschöpfung von Verbindungs-Pools zu vermeiden.
Reihenfolge: Es ist ratsam, alle zugehörigen Statements mit sqlsrv_free_stmt() zu schließen, bevor die Verbindung geschlossen wird. Zwar werden ausstehende Statements automatisch freigegeben, aber explizites Freigeben verbessert die Lesbarkeit und Vorhersagbarkeit des Codes.
Fehlerbehandlung: Nach einem fehlgeschlagenen sqlsrv_close()-Aufruf können weitere Details über sqlsrv_errors() abgefragt werden.