Start · Sprachen · PHP · Referenz · sqlsrv_connect

sqlsrv_connect

Funktion

Öffnet eine Verbindung zu einer Microsoft-SQL-Server-Datenbank und gibt eine Verbindungsressource zurück.

seit PHP 1.0.0 Kategorie: db

Signatur

sqlsrv_connect(string $serverName, array $connectionInfo = []): resource|false

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

Typ
resource|false
Beschreibung
Bei erfolgreicher Verbindung wird eine SQLSRV-Verbindungsressource zurückgegeben. Im Fehlerfall wird 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 erfolgreich hergestellt.

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);
ALFKI - Alfreds Futterkiste ANATR - Ana Trujillo Emparedados y helados ...

// 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.