get_client_version
Erklärung der mysqli_get_client_version()-Funktion in PHP, die die Versionsnummer der MySQL-Client-Bibliothek als kodierten Integer zurückgibt.
Die Funktion mysqli_get_client_version() gibt die Version der MySQL-Client-Bibliothek zurück, gegen die Ihre PHP-Installation kompiliert wurde – kodiert als einzelner Integer. Diese Seite erklärt, was dieser Integer bedeutet, wie man ihn in einen lesbaren Versionsstring dekodiert und wann es sinnvoll ist, diesen Wert zu prüfen.
Was die Funktion tut
mysqli_get_client_version() ist eine eingebaute MySQLi-Funktion. Sie gibt die Version der Client-Bibliothek (z. B. mysqlnd oder libmysqlclient) an, die PHP zur Kommunikation mit einem MySQL-Server verwendet – nicht die Version des MySQL-Servers selbst und nicht Ihre PHP-Version.
Zwei Eigenschaften machen sie praktisch:
- Sie benötigt keine Argumente und erfordert keine offene Verbindung. Sie können sie aufrufen, bevor eine Verbindung zu einer Datenbank hergestellt wird, was bei Startprüfungen oder Umgebungsdiagnosen nützlich ist.
- Sie gibt einen Integer zurück, sodass der Wert leicht numerisch verglichen werden kann (zum Beispiel: „Ist der Client mindestens Version 8.0?").
Um stattdessen die Server-Version zu prüfen, verwenden Sie die verbindungsbasierten Begleitfunktionen, die am Ende dieser Seite verlinkt sind.
Syntax
mysqli_get_client_version(): intEs gibt auch eine objektorientierte Entsprechung in der mysqli-Klasse:
$mysqli->client_version; // property, not a method callDen Integer lesen
Der Integer ist keine einfache Versionsnummer – er packt Haupt-, Neben- und Unterversion nach folgender Formel in einen Wert:
main_version * 10000 + minor_version * 100 + sub_versionEine Client-Bibliothek der Version 8.0.3 wird also als 80003 und 8.3.0 als 80300 zurückgegeben. Der nächste Abschnitt zeigt, wie man den rohen Integer in einen lesbaren String umwandelt.
Grundlegendes Beispiel
Das einfachste Anwendungsbeispiel gibt den rohen Integer aus:
<?php
$client_version = mysqli_get_client_version();
printf("MySQL client library version number: %d\n", $client_version);
?>Für eine Client-Bibliotheksversion 8.3.0 gibt dies aus:
MySQL client library version number: 80300In einen lesbaren Versionsstring dekodieren
Da der rohe Integer selten für sich allein nützlich ist, lässt er sich mit einfacher ganzzahliger Arithmetik dekodieren:
<?php
$version = mysqli_get_client_version();
$major = (int) ($version / 10000);
$minor = (int) ($version % 10000 / 100);
$sub = $version % 100;
printf("Client library version: %d.%d.%d\n", $major, $minor, $sub);
?>Für einen Rohwert von 80300 ergibt dies:
Client library version: 8.3.0Wann man sie verwenden sollte
- Startdiagnosen: Protokollieren Sie die Client-Bibliotheksversion, damit Support-Tickets diese Information enthalten, ohne einen zusätzlichen Rundgang zum Server zu benötigen.
- Feature-Gating: Einige MySQLi-Funktionen hängen von der Client-Bibliothek ab; Sie können den Integer numerisch vergleichen, bevor Sie sich auf sie verlassen.
- Build-Verifikation: Bestätigen Sie, dass ein bereitgestelltes Image gegen die erwartete Client-Bibliothek kompiliert wurde (z. B.
mysqlndanstatt ein System-libmysqlclient).
Häufige Fallstricke
- Es ist nicht die Server-Version. Eine moderne Client-Bibliothek kann mit einem älteren Server kommunizieren und umgekehrt; schließen Sie niemals auf Server-Fähigkeiten aus diesem Wert.
- Vergleichen Sie Integer, keine Strings. Da das Format zwar eine feste Breite hat, aber nicht für die Anzeige mit Nullen aufgefüllt wird, vergleichen Sie die rohen Integer (
$version >= 80000) anstatt den dekodiertem String zu parsen. - Prozeduraler vs. objektorientierter Stil.
mysqli_get_client_version()ist eine Funktion; die objektorientierte Form ist die$mysqli->client_version-Eigenschaft ohne Klammern.
Fazit
mysqli_get_client_version() liefert die MySQL-Client-Bibliotheksversion als einzelnen kodierten Integer ohne Verbindungsanforderung. Dekodieren Sie ihn mit der Formel major * 10000 + minor * 100 + sub, wenn Sie einen lesbaren String benötigen, und bedenken Sie, dass er die Client-Bibliothek beschreibt – nicht den Datenbankserver.
Verwandte Funktionen
- mysqli_get_client_info() — die Client-Bibliotheksversion als lesbarer String.
- mysqli_get_server_version() — die Server-Version (Verbindung erforderlich).
- mysqli_get_server_info() — die Server-Version als String.
- mysqli_get_host_info() — der Verbindungstyp und Host-Details.