get_proto_info
Saiba como usar mysqli_get_proto_info() em PHP para obter a versão do protocolo usado pela conexão MySQL.
A função mysqli_get_proto_info() retorna a versão do protocolo cliente/servidor MySQL utilizado por uma conexão aberta. O protocolo é o formato de comunicação de baixo nível que a extensão PHP MySQLi e o servidor MySQL usam para trocar pacotes — não é o mesmo que a versão do servidor MySQL (para isso, consulte mysqli_get_server_info()). Esta página aborda a sintaxe da função, seus parâmetros, valor de retorno e um exemplo executável, além de quando você realmente precisaria utilizá-la.
Sintaxe
A função existe tanto no estilo procedural quanto no orientado a objetos:
// Procedural style
mysqli_get_proto_info(mysqli $mysql): int
// Object-oriented style
$mysqli->protocol_versionParâmetro
$mysql— um object de conexão MySQLi retornado pormysqli_connect()(apenas no estilo procedural).
Valor de retorno
Um int contendo a versão do protocolo. Para todos os servidores MySQL atuais, esse valor é 10, que corresponde ao protocolo introduzido no MySQL 3.x e ainda em uso hoje. O valor é uma propriedade da conexão, portanto você deve ter uma conexão aberta antes de chamá-lo.
Exemplo básico
A forma clássica de chamá-lo é em uma conexão ativa. Substitua as credenciais pelas suas:
<?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);
?>Aqui abrimos uma conexão com mysqli_connect(), verificamos se foi bem-sucedida e, em seguida, passamos o object de conexão para mysqli_get_proto_info(). A função retorna um inteiro que imprimimos com echo.
Estilo orientado a objetos
Se você usar a API MySQLi orientada a objetos, leia a propriedade protocol_version do object de conexão em vez de chamar a função procedural — ambos retornam o mesmo 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();
?>Quando usar isso?
No código de aplicação do dia a dia, você quase nunca precisa da versão do protocolo. Ela é mais útil para:
- Diagnósticos e logging — registrar metadados de conexão junto com
mysqli_get_host_info()emysqli_get_server_info()ao solucionar problemas em uma conexão instável. - Verificações de sanidade — confirmar que uma conexão foi realmente estabelecida antes de executar consultas, já que a chamada só retorna um valor significativo em um link aberto.
Para obter detalhes mais completos sobre a conexão, consulte estas funções relacionadas:
mysqli_get_server_info()— a string com a versão do servidor MySQL.mysqli_get_host_info()— o nome do host e o tipo de conexão (TCP/IP, socket, etc.).mysqli_get_client_info()— a versão da biblioteca cliente MySQL.
Conclusão
A função mysqli_get_proto_info() é uma forma simples de ler a versão inteira do protocolo (10 em servidores modernos) de uma conexão MySQLi ativa. Ela raramente é necessária na lógica cotidiana, mas continua sendo útil para diagnósticos, logging e para confirmar que sua aplicação está se comunicando com o banco de dados pelo protocolo esperado.