Tout d'abord, il doit être clair que MySQLI :: $ client_version renvoie la version de la bibliothèque client utilisée lorsque PHP communique avec MySQL, plutôt que le numéro de version du serveur MySQL. C'est une idée fausse commune que de nombreux développeurs croient à tort qu'il renvoie une version correspondant au serveur MySQL.
La version client fait référence à la version de la bibliothèque client MySQL (par exemple, libmysqlclient ou mysqlnd) utilisée lorsque PHP est installé.
La version du serveur fait référence à la version exécutant MySQL Server.
Si vous mettez à jour la version du serveur MySQL, mais que la bibliothèque client MySQL utilisée par PHP n'a pas changé, le numéro de version renvoyé par MySQLI :: $ client_version ne changera naturellement pas.
La cause profonde de ce problème est que PHP et MySQL sont deux composants distincts, et les bibliothèques clients utilisées par PHP (telles que MySQLND ou LibMysQlClient) ne mettent pas automatiquement à jour car la version du serveur MySQL est modifiée. En d'autres termes, même si le serveur MySQL est mis à jour, PHP utilise toujours la version de la bibliothèque client lors de son installation.
Supposons que vous ayez un serveur MySQL exécuté dans la version 8.0, mais PHP utilise MySQLND 5.0. Même si vous mettez à niveau le serveur MySQL, la version renvoyée par MySQLI :: $ client_version est toujours MySQLND 5.0 et ne sera pas automatiquement mise à jour vers MySQL 8.0.
Pour vous assurer que PHP utilise la dernière version de la bibliothèque client MySQL, vous devrez peut-être mettre à jour manuellement la bibliothèque client MySQL dans PHP. Les méthodes spécifiques sont les suivantes:
Mettez à jour l'extension PHP : assurez-vous d'abord que l'extension MySQLI que vous utilisez est compatible avec la version de MySQL. Vous pouvez vous assurer que la dernière version de MySqlnd ou LibMysQlClient est activée en vérifiant les paramètres d'extension pertinents dans le fichier de configuration PHP (PHP.ini).
Pour les situations où MySqlnd est utilisé, vous pouvez dire directement si l'extension MySQLND est activée dans le fichier de configuration PHP.
Pour l'utilisation de libmysqlclient, assurez-vous que votre PHP Compile-Time relie une bibliothèque client compatible avec la version MySQL Server.
Recompile PHP : Si votre installation PHP ne contient pas la dernière version de la bibliothèque client MySQL, vous pouvez envisager de recomposer PHP et d'activer la version correspondante de la bibliothèque client. Pour des étapes spécifiques, veuillez vous référer à la documentation PHP officielle pour vous assurer que vous liez la version correcte du client MySQL au moment de la compilation.
Utilisation de mysqlnd : il est recommandé d'utiliser le pilote natif MySQL (MySQLND) comme principal moyen d'interagir avec MySQL dans PHP. MySQLND a non seulement des performances supérieures, mais prend également en charge plus de fonctions MySQL, et elle sera automatiquement optimisée avec les mises à jour PHP. Assurez-vous que votre PHP a l'installation de l'extension MySQLND et utilisez-la comme bibliothèque client MySQL par défaut.
Bien que MySqli :: $ client_version ne renvoie que le numéro de version de la bibliothèque client, il est toujours très important de comprendre la relation entre le serveur et la version client. En règle générale, la bibliothèque client MySQL doit prendre en charge les fonctionnalités et les fonctionnalités compatibles avec la version du serveur. Spécifiquement:
Compatibilité arrière : la bibliothèque client MySQL est généralement compatible, c'est-à-dire qu'elle peut communiquer avec de nouvelles versions de serveurs MySQL même si la version de la bibliothèque client est plus faible. Mais cela ne signifie pas que vous pouvez utiliser toutes les fonctionnalités de la nouvelle version du serveur.
Compatibilité vers l'avant : si vous utilisez une ancienne bibliothèque client (comme une version antérieure de libmysqlclient installée en PHP), les nouvelles fonctionnalités des serveurs MySQL peuvent ne pas être prises en charge. Pour ce cas, la mise à niveau de la bibliothèque client ou l'utilisation de mysqlnd est une solution.
Si vous souhaitez confirmer le numéro de version du serveur MySQL, pas la version de la bibliothèque client, vous pouvez utiliser l'instruction SQL suivante:
<span><span><span class="hljs-keyword">SELECT</span></span><span> VERSION();
</span></span>Cela renverra le numéro de version du serveur MySQL actuel, vous aidant à distinguer du numéro de version client renvoyé par mysqli :: $ client_version .
mysqli :: $ client_version renvoie la version de la bibliothèque client utilisée par PHP lors de la communication avec MySQL, pas la version du serveur MySQL. Si vous constatez que MySQLI :: $ client_version renvoie toujours le même numéro de version, cela peut être dû au fait que la version MySQL Client Library utilisée dans PHP n'est pas mise à jour. Les solutions à ce problème incluent la mise à jour de la bibliothèque client MySQL dans PHP, à l'aide de MySQLND, ou recompilant PHP pour s'assurer que la dernière bibliothèque client est utilisée.
Au cours du processus de développement, la compréhension de la différence entre le client et la version serveur est très importante pour éviter les problèmes connexes et optimiser les opérations de base de données.
Étiquettes associées:
mysqli