Start · Sprachen · PHP · Referenz · mysqli_get_server_version

mysqli_get_server_version

Funktion

Gibt die Version des verbundenen MySQL-Servers als ganzzahligen Wert zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_get_server_version(mysqli $mysql): int

Beschreibung

mysqli_get_server_version() liefert die Versionsnummer des MySQL-Servers, mit dem die übergebene Verbindung besteht, als int. Die Zahl ist nach dem Schema Hauptversion * 10000 + Nebenversion * 100 + Patch kodiert. MySQL 8.0.32 ergibt beispielsweise den Wert 80032.

Diese Funktion ist nützlich, wenn eine Anwendung bestimmte Datenbankfunktionen nur ab einer bestimmten Server-Version nutzen soll. Durch einen einfachen Vergleich des Integer-Wertes lässt sich die kompatible Codepfad-Steuerung realisieren, ohne Zeichenketten-Parsing betreiben zu müssen.

Im objektorientierten Stil steht die äquivalente Eigenschaft mysqli::$server_version zur Verfügung. Wer die menschenlesbare Versionszeichenkette benötigt, verwendet stattdessen mysqli_get_server_info().

Parameter

Name Typ Default Beschreibung
$mysql Pflicht mysqli Eine aktive MySQLi-Verbindungsressource, wie sie von mysqli_connect() oder new mysqli() zurückgegeben wird.

Rückgabewert

Typ
int
Beschreibung
Die Serverversion als ganzzahliger Wert, kodiert nach dem Schema Hauptversion * 10000 + Nebenversion * 100 + Patch. Bei MySQL 5.7.44 wäre das beispielsweise 50744.

Beispiele

Serverversion ausgeben und dekodieren

<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'testdb');

if ($mysqli->connect_errno) {
    die('Verbindungsfehler: ' . $mysqli->connect_error);
}

$version = mysqli_get_server_version($mysqli);

$major = (int) ($version / 10000);
$minor = (int) (($version % 10000) / 100);
$patch = (int) ($version % 100);

echo "Server-Versionsnummer (Integer): $version\n";
echo "Dekodiert: $major.$minor.$patch\n";

$mysqli->close();
Server-Versionsnummer (Integer): 80032 Dekodiert: 8.0.32

Versionsbasierte Feature-Steuerung

<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'testdb');

if ($mysqli->connect_errno) {
    die('Verbindungsfehler: ' . $mysqli->connect_error);
}

$version = mysqli_get_server_version($mysqli);

// JSON-Funktionen sind ab MySQL 5.7.8 (50708) verfügbar
if ($version >= 50708) {
    echo "JSON-Unterstützung ist verfügbar.\n";
    // JSON-spezifische Abfrage ausführen ...
} else {
    echo "JSON-Unterstützung nicht vorhanden – bitte MySQL aktualisieren.\n";
}

// Common Table Expressions (CTEs) sind ab MySQL 8.0.0 (80000) verfügbar
if ($version >= 80000) {
    echo "CTEs (WITH-Klausel) werden unterstützt.\n";
} else {
    echo "CTEs werden nicht unterstützt.\n";
}

$mysqli->close();
JSON-Unterstützung ist verfügbar. CTEs (WITH-Klausel) werden unterstützt.

// Wichtig · Fallstricke

Die Funktion gibt die Version des Server-Prozesses zurück, nicht die der Client-Bibliothek. Um die Client-Bibliotheks-Version zu ermitteln, steht mysqli_get_client_version() zur Verfügung.

Im objektorientierten Stil kann die Serverversion auch über $mysqli->server_version abgerufen werden, was identische Ergebnisse liefert.