Start · Sprachen · PHP · Referenz · mysql_connect

mysql_connect

Funktion

Öffnet eine Verbindung zu einem MySQL-Server und gibt bei Erfolg eine Verbindungsressource zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_connect(string $server = 'localhost:3306', string $username = '', string $password = '', bool $new_link = false, int $client_flags = 0): resource|false

Beschreibung

mysql_connect() stellt eine Verbindung zu einem MySQL-Datenbankserver her und gibt eine Verbindungsressource zurück, die für nachfolgende MySQL-Funktionen verwendet werden kann. Die Funktion gehört zur veralteten ext/mysql-Erweiterung, die in PHP 5.5 als veraltet markiert und in PHP 7.0 vollständig entfernt wurde. Für neue Projekte sollte stattdessen mysqli_connect() oder die PDO-Klasse verwendet werden.

Wird dieselbe Verbindung (gleicher Server, Benutzername und Passwort) erneut angefordert, ohne dass $new_link auf true gesetzt ist, gibt die Funktion die bereits vorhandene Verbindungsressource zurück, anstatt eine neue Verbindung zu öffnen. Dieses Verhalten kann mit dem Parameter $new_link übersteuert werden.

Über den Parameter $client_flags können verschiedene Verbindungsoptionen übergeben werden, etwa MYSQL_CLIENT_SSL für eine SSL-verschlüsselte Verbindung, MYSQL_CLIENT_COMPRESS für komprimierte Übertragung oder MYSQL_CLIENT_IGNORE_SPACE, um Leerzeichen nach Funktionsnamen zu ignorieren.

Da die gesamte ext/mysql-Erweiterung in PHP 7.0 entfernt wurde, kann dieser Code auf modernen PHP-Versionen nicht mehr ausgeführt werden. Bestehende Anwendungen, die noch PHP 5.x einsetzen, sollten dringend auf mysqli oder PDO_MySQL migriert werden.

Parameter

Name Typ Default Beschreibung
$server string localhost:3306 Hostname des MySQL-Servers, optional gefolgt von einem Doppelpunkt und der Portnummer (z. B. "db.example.com:3307") oder dem Pfad zu einem lokalen Socket (z. B. ":/var/run/mysql/mysql.sock").
$username string MySQL-Benutzername für die Anmeldung. Standardmäßig wird der Name des Prozess-Eigentümers des PHP-Prozesses verwendet.
$password string Passwort des angegebenen MySQL-Benutzers. Standardmäßig wird ein leeres Passwort verwendet.
$new_link bool false Wird dieser Parameter auf true gesetzt, wird bei einem erneuten Aufruf mit denselben Verbindungsparametern eine neue Verbindung geöffnet, anstatt die bereits vorhandene zurückzugeben.
$client_flags int 0 Kombination aus Verbindungskonstanten wie MYSQL_CLIENT_SSL, MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE oder MYSQL_CLIENT_INTERACTIVE, die das Verbindungsverhalten steuern.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine MySQL-Verbindungsressource zurück. Im Fehlerfall wird false zurückgegeben, und es wird ein Fehler der Stufe E_WARNING ausgelöst.

Beispiele

Einfache Datenbankverbindung herstellen (PHP 5.x)

<?php
// Verbindung zum MySQL-Server herstellen
$verbindung = mysql_connect('localhost', 'datenbankbenutzer', 'geheimesPasswort');

if (!$verbindung) {
    die('Verbindung fehlgeschlagen: ' . mysql_error());
}

echo 'Verbindung erfolgreich hergestellt.';

// Datenbank auswählen
mysql_select_db('meine_datenbank', $verbindung);

// Einfache Abfrage ausführen
$ergebnis = mysql_query('SELECT id, name FROM benutzer LIMIT 5', $verbindung);

while ($zeile = mysql_fetch_assoc($ergebnis)) {
    echo $zeile['id'] . ': ' . htmlspecialchars($zeile['name']) . PHP_EOL;
}

// Verbindung schließen
mysql_close($verbindung);
Verbindung erfolgreich hergestellt. 1: Alice 2: Bob 3: Charlie

Migration zu mysqli_connect (empfohlen)

<?php
// VERALTET — nicht mehr verwenden:
// $verbindung = mysql_connect('localhost', 'benutzer', 'passwort');

// MODERN — mit MySQLi (prozedurale API):
$verbindung = mysqli_connect('localhost', 'benutzer', 'passwort', 'meine_datenbank');

if (!$verbindung) {
    die('Verbindung fehlgeschlagen: ' . mysqli_connect_error());
}

echo 'Verbindung mit MySQLi erfolgreich.' . PHP_EOL;

// Sicher mit Prepared Statements:
$stmt = mysqli_prepare($verbindung, 'SELECT id, name FROM benutzer WHERE id = ?');
mysqli_stmt_bind_param($stmt, 'i', $userId);
$userId = 1;
mysqli_stmt_execute($stmt);
$ergebnis = mysqli_stmt_get_result($stmt);
$zeile = mysqli_fetch_assoc($ergebnis);
echo $zeile['id'] . ': ' . htmlspecialchars($zeile['name']) . PHP_EOL;

mysqli_close($verbindung);
Verbindung mit MySQLi erfolgreich. 1: Alice

// Wichtig · Fallstricke

Deprecation und Entfernung: Die gesamte ext/mysql-Erweiterung inklusive mysql_connect() wurde in PHP 5.5.0 als veraltet markiert (E_DEPRECATED-Warnung) und in PHP 7.0.0 vollständig entfernt. Auf PHP-7+-Systemen führt die Verwendung dieser Funktion zu einem fatalen Fehler.

Sicherheit — SQL-Injection: Die alte ext/mysql-Erweiterung bietet keine native Unterstützung für Prepared Statements. Das manuelle Escaping mit mysql_real_escape_string() ist fehleranfällig. Moderne Alternativen (mysqli, PDO) mit Prepared Statements bieten deutlich besseren Schutz vor SQL-Injection.

Passwort-Sicherheit: Zugangsdaten sollten niemals im Quellcode hart kodiert werden. Verwende Konfigurationsdateien außerhalb des Webroot-Verzeichnisses oder Umgebungsvariablen.

Migration: Für die Migration zu mysqli oder PDO stehen offizielle PHP-Migrationsleitfäden zur Verfügung. Die APIs sind ähnlich, aber nicht identisch — insbesondere bei Prepared Statements und Fehlerbehandlung gibt es wichtige Unterschiede.