get_server_version
Découvrez la fonction mysqli_get_server_version() en PHP, qui retourne le numéro de version du serveur MySQL sous forme d'entier.
Dans cet article, nous allons nous concentrer sur la fonction mysqli_get_server_version() en PHP, qui retourne le numéro de version du serveur MySQL sous forme d'entier. Nous expliquerons son fonctionnement, comment décoder le nombre qu'elle retourne, quand l'utiliser à la place de la fonction basée sur les chaînes mysqli_get_server_info(), et les pièges courants à éviter.
Introduction à la fonction mysqli_get_server_version()
La fonction mysqli_get_server_version() est une fonction PHP intégrée qui retourne la version du serveur MySQL connecté sous forme d'entier unique. Elle prend un argument — une connexion MySQLi ouverte — et retourne un nombre tel que 80037.
int mysqli_get_server_version(mysqli $mysql)L'entier est encodé selon cette formule :
main_version * 10000 + minor_version * 100 + sub_versionAinsi, MySQL 8.0.37 devient 8 * 10000 + 0 * 100 + 37 = 80037, et MySQL 5.7.29 devient 50729. Comme la valeur est un entier simple, c'est la forme la plus fiable pour les comparaisons numériques — il n'est pas nécessaire d'analyser une string comme "8.0.37-0ubuntu0.22.04.1".
Comment utiliser la fonction mysqli_get_server_version()
Appelez la fonction sur une connexion MySQLi valide. Vérifiez toujours que la connexion a réussi en premier, sinon vous passeriez un handle invalide :
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
die("Connection failed: " . mysqli_connect_error());
}
$server_version = mysqli_get_server_version($mysqli);
echo "Server version (integer): " . $server_version;
mysqli_close($mysqli);
?>Ici, nous ouvrons une connexion avec mysqli_connect(), la vérifions, puis lisons la version. La sortie pour un serveur MySQL 8.0.37 est :
Server version (integer): 80037La fonction fonctionne également en style orienté objet — $mysqli->server_version est la propriété équivalente à l'appel procédural.
Décoder le numéro de version
Comme le résultat est encodé, vous souhaiterez généralement le reconvertir en une string lisible MAJOR.MINOR.PATCH. Inversez la formule avec la division entière et l'opérateur modulo :
<?php
$version = 80037; // value returned by mysqli_get_server_version()
$major = intdiv($version, 10000);
$minor = intdiv($version % 10000, 100);
$patch = $version % 100;
echo "MySQL {$major}.{$minor}.{$patch}";
?>Cela affiche :
MySQL 8.0.37Quand l'utiliser (et quoi utiliser à la place)
- Utilisez
mysqli_get_server_version()lorsque vous avez besoin de comparer des versions dans le code — par exemple, pour activer une fonctionnalité uniquement sur MySQL 8.0 ou supérieur. Une vérification numérique commeif ($mysqli->get_server_version() >= 80000)est plus simple et plus sûre que l'analyse d'une string. - Utilisez
mysqli_get_server_info()lorsque vous voulez la string de version complète lisible (y compris les suffixes de distribution) pour la journalisation ou l'affichage. - Utilisez
mysqli_get_client_version()lorsque vous avez besoin de la version de la bibliothèque cliente MySQL avec laquelle PHP a été compilé, plutôt que celle du serveur auquel il se connecte.
Pièges courants
- La fonction retourne la version du serveur, pas de PHP lui-même. Pour la version du runtime PHP, utilisez
phpversion()ou la constantePHP_VERSION. - Elle nécessite une connexion établie. Si
mysqli_connect()échoue, vérifiezmysqli_connect_error()avant d'appeler cette fonction. - L'entier n'est pas la même valeur que la string retournée par
mysqli_get_server_info(); ne les comparez pas directement.
Conclusion
La fonction mysqli_get_server_version() fournit un moyen numérique et fiable de vérifier la version du serveur MySQL. Connaître l'encodage main * 10000 + minor * 100 + sub vous permet de le décoder en une string lisible et d'écrire des comparaisons de versions propres qui maintiennent vos applications pilotées par base de données compatibles et stables.