Signatur
Beschreibung
sqlsrv_connect() ist Teil der SQLSRV-Erweiterung für PHP und stellt eine Verbindung zu einem Microsoft SQL Server (ab 2005) oder Azure SQL her. Die Funktion gibt bei Erfolg eine Verbindungsressource zurück, die für alle nachfolgenden SQLSRV-Funktionen benötigt wird.
Der Parameter $serverName gibt den Hostnamen oder die IP-Adresse des Servers an. Optional kann ein benutzerdefinierter Port oder eine benannte Instanz angehängt werden, z. B. "localhost, 1433" oder "Server\Instanzname". Im Array $connectionInfo werden Verbindungsoptionen wie Datenbankname, Benutzername, Passwort, Zeichensatz und viele weitere Einstellungen übergeben.
Wird kein Benutzername und kein Passwort übergeben, versucht die Erweiterung eine Windows-Authentifizierung (Integrated Security). Für SQL-Server-Authentifizierung müssen "UID" und "PWD" im $connectionInfo-Array angegeben werden.
Die Verbindung sollte nach Gebrauch immer mit sqlsrv_close() geschlossen werden, um Ressourcen freizugeben. Fehlermeldungen zur Verbindung lassen sich über sqlsrv_errors() abrufen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $serverName Pflicht | string | Name, IP-Adresse oder Hostname des SQL-Servers. Kann eine benannte Instanz ("Server\Instanz") oder einen Port ("Server, 1433") enthalten. |
|
| $connectionInfo | array | [] | Assoziatives Array mit Verbindungsoptionen, z. B. "Database", "UID", "PWD", "CharacterSet", "LoginTimeout", "Encrypt" oder "TrustServerCertificate". |
Rückgabewert
false zurückgegeben; die genauen Fehlerinformationen können mit sqlsrv_errors() abgerufen werden.Beispiele
Verbindung mit SQL-Server-Authentifizierung
<?php
$server = "localhost, 1433";
$connectionInfo = [
"Database" => "MeineDatenbank",
"UID" => "db_benutzer",
"PWD" => "geheimesPasswort",
"Encrypt" => true,
"TrustServerCertificate" => false,
];
$conn = sqlsrv_connect($server, $connectionInfo);
if ($conn === false) {
echo "Verbindung fehlgeschlagen:\n";
print_r(sqlsrv_errors());
exit;
}
echo "Verbindung erfolgreich hergestellt.";
sqlsrv_close($conn);
Verbindung mit Windows-Authentifizierung (Integrated Security)
<?php
$server = "MSSQL-SERVER\SQLEXPRESS";
$connectionInfo = [
"Database" => "Northwind",
"CharacterSet" => "UTF-8",
"LoginTimeout" => 10,
];
// Ohne UID/PWD wird automatisch Windows-Authentifizierung verwendet
$conn = sqlsrv_connect($server, $connectionInfo);
if ($conn === false) {
foreach (sqlsrv_errors() as $error) {
echo "SQLSTATE: " . $error['SQLSTATE'] . "\n";
echo "Meldung: " . $error['message'] . "\n";
}
exit;
}
$sql = "SELECT TOP 5 CustomerID, CompanyName FROM Customers";
$stmt = sqlsrv_query($conn, $sql);
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo $row['CustomerID'] . " - " . $row['CompanyName'] . "\n";
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
// Wichtig · Fallstricke
Sicherheitshinweis: Speichere Zugangsdaten (UID, PWD) niemals direkt im Quellcode. Verwende stattdessen Umgebungsvariablen oder externe Konfigurationsdateien, die außerhalb des Web-Roots liegen und nicht öffentlich zugänglich sind.
Verschlüsselung: Setze "Encrypt" => true in Produktionsumgebungen, um die Verbindung zu verschlüsseln. Stelle sicher, dass das Serverzertifikat gültig ist, und setze "TrustServerCertificate" nur in Entwicklungsumgebungen auf true.
Verbindung schließen: Rufe immer sqlsrv_close() auf, wenn die Verbindung nicht mehr benötigt wird, da die SQLSRV-Erweiterung standardmäßig keine persistenten Verbindungen verwendet.
Voraussetzungen: Die SQLSRV-Erweiterung ist nicht Bestandteil des PHP-Kerns und muss separat installiert werden (Microsoft SQLSRV Driver for PHP). Auf Linux-Systemen wird zusätzlich der Microsoft ODBC Driver for SQL Server benötigt.