get_proto_info
Aprende a usar mysqli_get_proto_info() en PHP para obtener la versión del protocolo MySQL utilizado por una conexión activa.
La función mysqli_get_proto_info() devuelve la versión del protocolo cliente/servidor de MySQL utilizado por una conexión abierta. El protocolo es el formato de bajo nivel que la extensión PHP MySQLi y el servidor MySQL utilizan para intercambiar paquetes — no es lo mismo que la versión del servidor MySQL (para eso, consulta mysqli_get_server_info()). Esta página cubre la sintaxis de la función, sus parámetros, el valor de retorno y un ejemplo ejecutable, además de cuándo usarla en la práctica.
Sintaxis
La función existe en estilos tanto procedimental como orientado a objetos:
// Procedural style
mysqli_get_proto_info(mysqli $mysql): int
// Object-oriented style
$mysqli->protocol_versionParámetro
$mysql— un object de conexión MySQLi devuelto pormysqli_connect()(solo en el estilo procedimental).
Valor de retorno
Un int que contiene la versión del protocolo. Para todos los servidores MySQL actuales este valor es 10, que corresponde al protocolo introducido en MySQL 3.x y que sigue en uso hoy en día. El valor es una propiedad de la conexión, por lo que debes tener una conexión abierta antes de llamar a esta función.
Ejemplo básico
La forma clásica de llamarla es sobre una conexión activa. Reemplaza las credenciales con las tuyas propias:
<?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);
?>Aquí abrimos una conexión con mysqli_connect(), verificamos que se haya establecido correctamente y luego pasamos el object de conexión a mysqli_get_proto_info(). La función devuelve un entero que imprimimos con echo.
Estilo orientado a objetos
Si utilizas la API MySQLi orientada a objetos, lee la propiedad protocol_version del object de conexión en lugar de llamar a la función procedimental — ambas devuelven el mismo valor:
<?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();
?>¿Cuándo usaría esto?
En el código de aplicación del día a día casi nunca necesitarás la versión del protocolo. Es más útil para:
- Diagnósticos y registro — registrar metadatos de conexión junto con
mysqli_get_host_info()ymysqli_get_server_info()al solucionar problemas con una conexión inestable. - Verificaciones de integridad — confirmar que una conexión está realmente establecida antes de ejecutar consultas, ya que la llamada solo devuelve un valor significativo sobre un enlace abierto.
Para obtener detalles de conexión más completos, consulta estas funciones relacionadas:
mysqli_get_server_info()— la cadena con la versión del servidor MySQL.mysqli_get_host_info()— el nombre del host y el tipo de conexión (TCP/IP, socket, etc.).mysqli_get_client_info()— la versión de la biblioteca cliente de MySQL.
Conclusión
La función mysqli_get_proto_info() es una forma sencilla de leer la versión entera del protocolo (10 en servidores modernos) de una conexión MySQLi activa. Rara vez se necesita en la lógica cotidiana, pero resulta útil para diagnósticos, registro y para confirmar que tu aplicación se comunica con la base de datos a través del protocolo esperado.