Start · Sprachen · PHP · Referenz · mysqli_set_opt

mysqli_set_opt

Funktion

Alias von <code>mysqli_options()</code> – setzt eine MySQL-Verbindungsoption vor dem Verbindungsaufbau.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_set_opt(mysqli $mysql, int $option, mixed $value): bool

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

Typ
bool
Beschreibung
Gibt 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);
Verbunden mit Zeichensatz: utf8mb4

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);
Verbindung mit eingeschränkten Optionen aufgebaut.

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