get_proto_info
Découvrez la fonction mysqli_get_proto_info() en PHP, utilisée pour retourner la version du protocole de la connexion MySQL.
La fonction mysqli_get_proto_info() retourne la version du protocole client/serveur MySQL utilisé par une connexion ouverte. Le protocole est le format de transmission bas niveau que l'extension PHP MySQLi et le serveur MySQL utilisent pour échanger des paquets — ce n'est pas la même chose que la version du serveur MySQL (pour cela, voir mysqli_get_server_info()). Cette page couvre la syntaxe de la fonction, ses paramètres, sa valeur de retour et un exemple exécutable, ainsi que les cas où vous en auriez réellement besoin.
Syntaxe
La fonction existe à la fois dans les styles procédural et orienté objet :
// Procedural style
mysqli_get_proto_info(mysqli $mysql): int
// Object-oriented style
$mysqli->protocol_versionParamètre
$mysql— un objet de connexion MySQLi retourné parmysqli_connect()(style procédural uniquement).
Valeur de retour
Un int contenant la version du protocole. Pour tous les serveurs MySQL actuels, cette valeur est 10, ce qui correspond au protocole introduit dans MySQL 3.x et encore utilisé aujourd'hui. La valeur est une propriété de la connexion, vous devez donc disposer d'une connexion ouverte avant de l'appeler.
Exemple de base
La façon classique de l'appeler est sur une connexion active. Remplacez les identifiants par les vôtres :
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
die("Connection failed: " . mysqli_connect_error());
}
$proto_info = mysqli_get_proto_info($mysqli);
echo "Protocol version: " . $proto_info; // e.g. "Protocol version: 10"
mysqli_close($mysqli);
?>Ici, nous ouvrons une connexion avec mysqli_connect(), vérifions qu'elle a réussi, puis passons l'objet de connexion à mysqli_get_proto_info(). La fonction retourne un entier que nous affichons avec echo.
Style orienté objet
Si vous utilisez l'API MySQLi orientée objet, lisez la propriété protocol_version de l'objet de connexion au lieu d'appeler la fonction procédurale — les deux retournent la même valeur :
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Protocol version: " . $mysqli->protocol_version; // e.g. 10
$mysqli->close();
?>Quand l'utiliser ?
Dans le code d'application courant, vous n'avez presque jamais besoin de la version du protocole. Elle est surtout utile pour :
- Les diagnostics et la journalisation — enregistrer les métadonnées de connexion aux côtés de
mysqli_get_host_info()etmysqli_get_server_info()lors du dépannage d'une connexion instable. - Les vérifications de cohérence — confirmer qu'une connexion est bien établie avant d'exécuter des requêtes, car l'appel ne retourne une valeur significative que sur un lien ouvert.
Pour des détails de connexion plus complets, consultez ces fonctions associées :
mysqli_get_server_info()— la chaîne de version du serveur MySQL.mysqli_get_host_info()— le nom d'hôte et le type de connexion (TCP/IP, socket, etc.).mysqli_get_client_info()— la version de la bibliothèque cliente MySQL.
Conclusion
La fonction mysqli_get_proto_info() est un moyen simple de lire la version entière du protocole (10 sur les serveurs modernes) d'une connexion MySQLi active. Elle est rarement nécessaire dans la logique quotidienne, mais reste utile pour les diagnostics, la journalisation et la confirmation que votre application communique avec la base de données via le protocole attendu.