Signatur
Beschreibung
mysqli_set_opt() ist ein direkter Alias der Funktion mysqli_options() und verhält sich identisch zu dieser. Die Funktion erlaubt es, verschiedene Verbindungsoptionen für eine MySQL-Verbindung zu konfigurieren, bevor mysqli_real_connect() aufgerufen wird.
Typische Anwendungsfälle sind das Setzen von Timeouts, das Aktivieren von SSL/TLS-Verbindungen, das Konfigurieren von Zeichensätzen oder das Laden einer speziellen Konfigurationsdatei. Die Funktion muss nach mysqli_init() und vor mysqli_real_connect() aufgerufen werden.
Da es sich um einen Alias handelt, ist die bevorzugte Funktion mysqli_options(). In objektorientierter Schreibweise steht die Methode $mysqli->options() zur Verfügung.
- MYSQLI_OPT_CONNECT_TIMEOUT – Verbindungs-Timeout in Sekunden
- MYSQLI_OPT_READ_TIMEOUT – Lese-Timeout in Sekunden
- MYSQLI_OPT_LOCAL_INFILE – LOAD DATA LOCAL INFILE aktivieren/deaktivieren
- MYSQLI_INIT_COMMAND – Kommando, das nach dem Verbindungsaufbau ausgeführt wird
- MYSQLI_SET_CHARSET_NAME – Zeichensatz der Verbindung setzen
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $mysql Pflicht | mysqli | Ein von mysqli_init() zurückgegebenes mysqli-Objekt, das noch nicht mit dem Server verbunden ist. |
|
| $option Pflicht | int | Die zu setzende Option als Konstante, z. B. MYSQLI_OPT_CONNECT_TIMEOUT, MYSQLI_SET_CHARSET_NAME oder MYSQLI_INIT_COMMAND. |
|
| $value Pflicht | mixed | Der Wert der Option. Der Typ hängt von der gewählten Option ab (typischerweise int oder string). |
Rückgabewert
true bei Erfolg zurück, false wenn die Option unbekannt ist oder nicht gesetzt werden konnte.Beispiele
Verbindungs-Timeout und Zeichensatz setzen
<?php
// Verbindung initialisieren (noch nicht verbinden)
$mysql = mysqli_init();
if (!$mysql) {
die('mysqli_init fehlgeschlagen');
}
// Timeout auf 5 Sekunden setzen (via Alias mysqli_set_opt)
mysqli_set_opt($mysql, MYSQLI_OPT_CONNECT_TIMEOUT, 5);
// Zeichensatz auf utf8mb4 setzen
mysqli_set_opt($mysql, MYSQLI_SET_CHARSET_NAME, 'utf8mb4');
// Jetzt erst die eigentliche Verbindung aufbauen
if (!mysqli_real_connect($mysql, 'localhost', 'benutzer', 'passwort', 'datenbank')) {
die('Verbindung fehlgeschlagen: ' . mysqli_connect_error());
}
echo 'Verbunden mit Zeichensatz: ' . mysqli_character_set_name($mysql);
mysqli_close($mysql);
LOAD DATA LOCAL INFILE deaktivieren
<?php
$mysql = mysqli_init();
// LOAD DATA LOCAL INFILE aus Sicherheitsgründen deaktivieren
mysqli_set_opt($mysql, MYSQLI_OPT_LOCAL_INFILE, 0);
// Init-Kommando setzen: SQL-Modus nach Verbindung konfigurieren
mysqli_set_opt($mysql, MYSQLI_INIT_COMMAND, "SET sql_mode='STRICT_ALL_TABLES'");
if (!mysqli_real_connect($mysql, 'localhost', 'benutzer', 'passwort', 'datenbank')) {
die('Verbindungsfehler: ' . mysqli_connect_error());
}
echo 'Verbindung mit eingeschränkten Optionen aufgebaut.';
mysqli_close($mysql);
// Wichtig · Fallstricke
Alias-Hinweis: mysqli_set_opt() ist ein Alias von mysqli_options(). Es wird empfohlen, direkt mysqli_options() bzw. in OOP $mysqli->options() zu verwenden, da Aliasfunktionen theoretisch in zukünftigen PHP-Versionen entfernt werden könnten.
Aufruf-Reihenfolge: Die Funktion muss zwingend nach mysqli_init() und vor mysqli_real_connect() aufgerufen werden. Nach einem Verbindungsaufbau mit mysqli_connect() ist sie wirkungslos.
Sicherheit: Das Deaktivieren von MYSQLI_OPT_LOCAL_INFILE (0) wird empfohlen, wenn die Anwendung keine lokalen Dateiimporte benötigt, um mögliche Angriffsvektoren zu minimieren.