Signatur
Beschreibung
mysqli_init() erzeugt und initialisiert ein neues mysqli-Objekt, ohne sofort eine Verbindung zur Datenbank herzustellen. Das zurückgegebene Objekt dient als Basis für weitere Konfigurationsschritte, insbesondere für den Aufruf von mysqli_options(), bevor die eigentliche Verbindung mit mysqli_real_connect() aufgebaut wird.
Der Hauptvorteil gegenüber dem direkten Einsatz von new mysqli() oder mysqli_connect() liegt darin, dass Verbindungsoptionen (z. B. SSL-Zertifikate, Timeouts, Zeichensatz-Einstellungen) vor dem Verbindungsaufbau gesetzt werden können. Dies ist insbesondere bei gesicherten Verbindungen über SSL/TLS oder bei speziellen Netzwerkeinstellungen hilfreich.
Im prozeduralen Stil wird das Objekt an mysqli_options() und mysqli_real_connect() übergeben. Im objektorientierten Stil sollte stattdessen direkt new mysqli() oder $mysqli->real_connect() verwendet werden, da mysqli_init() primär für den prozeduralen Ansatz vorgesehen ist.
Hinweis: Ab PHP 8.1 ist diese Funktion als veraltet (deprecated) markiert. Es wird empfohlen, stattdessen new mysqli() zu verwenden und Optionen über Methoden des Objekts zu setzen.
Rückgabewert
mysqli-Objekt zurück, das noch keine aktive Datenbankverbindung besitzt. Bei einem Fehler wird false zurückgegeben.Beispiele
Verbindung mit SSL-Optionen via mysqli_init und mysqli_real_connect
<?php
// Objekt initialisieren
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init() fehlgeschlagen');
}
// Verbindungs-Timeout auf 5 Sekunden setzen
mysqli_options($mysqli, MYSQLI_OPT_CONNECT_TIMEOUT, 5);
// SSL-Verbindung konfigurieren
mysqli_ssl_set(
$mysqli,
'/etc/ssl/client-key.pem',
'/etc/ssl/client-cert.pem',
'/etc/ssl/ca-cert.pem',
null,
null
);
// Verbindung herstellen
if (!mysqli_real_connect($mysqli, 'localhost', 'benutzer', 'passwort', 'meine_datenbank')) {
die('Verbindung fehlgeschlagen: ' . mysqli_connect_error());
}
echo 'Erfolgreich mit SSL verbunden.';
mysqli_close($mysqli);
Einfache Verwendung ohne SSL (prozedualer Stil)
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('Initialisierung fehlgeschlagen');
}
// Optionale Einstellung: Lese-Timeout
mysqli_options($mysqli, MYSQLI_OPT_READ_TIMEOUT, 10);
// Verbindung aufbauen
if (!mysqli_real_connect($mysqli, '127.0.0.1', 'root', 'geheim', 'testdb', 3306)) {
echo 'Verbindungsfehler: ' . mysqli_connect_error();
exit;
}
$result = mysqli_query($mysqli, 'SELECT VERSION() AS version');
$row = mysqli_fetch_assoc($result);
echo 'MySQL-Version: ' . $row['version'];
mysqli_close($mysqli);
// Wichtig · Fallstricke
Deprecation: Ab PHP 8.1.0 ist mysqli_init() als veraltet markiert und erzeugt eine entsprechende Warnung. Neuer Code sollte stattdessen new mysqli() verwenden und Optionen über $mysqli->options() bzw. $mysqli->ssl_set() vor dem Aufruf von $mysqli->real_connect() setzen.
Das von mysqli_init() zurückgegebene Objekt darf nicht direkt mit mysqli_query() verwendet werden — erst nach einem erfolgreichen mysqli_real_connect()-Aufruf ist die Verbindung nutzbar.
Sicherheitshinweis: Bei SSL-Verbindungen sollten Zertifikate und Schlüsseldateien sorgfältig verwaltet und mit restriktiven Dateisystemberechtigungen geschützt werden, um unbefugten Zugriff zu verhindern.