Start · Sprachen · PHP · Referenz · mysqli_init

mysqli_init

Funktion

Initialisiert MySQLi und gibt ein <code>mysqli</code>-Objekt zurück, das anschließend mit <code>mysqli_real_connect()</code> verwendet werden kann.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_init(): mysqli|false

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

Typ
mysqli|false
Beschreibung
Gibt ein initialisiertes 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);
Erfolgreich mit SSL verbunden.

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);
MySQL-Version: 8.0.33

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