get_client_version
Saiba como usar mysqli_get_client_version() em PHP para obter a versão da biblioteca cliente MySQL como um inteiro codificado.
A função mysqli_get_client_version() retorna a versão da biblioteca cliente MySQL contra a qual sua instalação PHP foi compilada, codificada como um único inteiro. Esta página explica o que esse inteiro significa, como decodificá-lo em uma string de versão legível e quando vale a pena verificar esse valor.
O que a função faz
mysqli_get_client_version() é uma função MySQLi nativa. Ela informa a versão da biblioteca cliente (como mysqlnd ou libmysqlclient) que o PHP utiliza para se comunicar com um servidor MySQL — não a versão do próprio servidor MySQL, e não a versão do PHP.
Dois aspectos a tornam conveniente:
- Não recebe argumentos e não requer nenhuma conexão aberta. Você pode chamá-la antes de se conectar a qualquer banco de dados, o que é útil em verificações de inicialização ou diagnósticos de ambiente.
- Retorna um inteiro, portanto o valor é fácil de comparar numericamente (por exemplo, "o cliente está na versão 8.0 ou superior?").
Para inspecionar a versão do servidor, use as funções complementares baseadas em conexão listadas no final desta página.
Sintaxe
mysqli_get_client_version(): intTambém existe um equivalente em estilo orientado a objetos na classe mysqli:
$mysqli->client_version; // property, not a method callLendo o inteiro
O inteiro não é um número de versão simples — ele empacota a versão principal, secundária e subversão em um único valor com esta fórmula:
main_version * 10000 + minor_version * 100 + sub_versionAssim, uma biblioteca cliente na versão 8.0.3 é reportada como 80003, e 8.3.0 é reportada como 80300. A próxima seção mostra como converter o inteiro bruto de volta em uma string legível.
Exemplo básico
O uso mais simples imprime o inteiro bruto:
<?php
$client_version = mysqli_get_client_version();
printf("MySQL client library version number: %d\n", $client_version);
?>Para uma versão de biblioteca cliente 8.3.0, isso imprime:
MySQL client library version number: 80300Decodificando em uma versão legível
Como o inteiro bruto raramente é útil por si só, decodifique-o com operações matemáticas simples:
<?php
$version = mysqli_get_client_version();
$major = (int) ($version / 10000);
$minor = (int) ($version % 10000 / 100);
$sub = $version % 100;
printf("Client library version: %d.%d.%d\n", $major, $minor, $sub);
?>Para um valor bruto de 80300, isso gera:
Client library version: 8.3.0Quando usar
- Diagnósticos de inicialização: registre a versão da biblioteca cliente para que os tickets de suporte a incluam sem precisar de uma ida extra ao servidor.
- Controle de funcionalidades: alguns recursos do MySQLi dependem da biblioteca cliente, então você pode comparar numericamente o inteiro antes de depender deles.
- Verificação de build: confirme que uma imagem implantada foi compilada com a biblioteca cliente esperada (por exemplo,
mysqlndem vez de umalibmysqlclientdo sistema).
Armadilhas comuns
- Não é a versão do servidor. Uma biblioteca cliente moderna pode se comunicar com um servidor mais antigo e vice-versa; nunca infira capacidades do servidor a partir deste valor.
- Compare inteiros, não strings. Como o formato tem largura quase fixa, mas não é preenchido com zeros para exibição, compare os inteiros brutos (
$version >= 80000) em vez de analisar a string decodificada. - Estilo procedural vs. orientado a objetos.
mysqli_get_client_version()é uma função; a forma de objeto é a propriedade$mysqli->client_version, sem parênteses.
Conclusão
mysqli_get_client_version() fornece a versão da biblioteca cliente MySQL como um único inteiro codificado, sem necessidade de conexão. Decodifique-o com a fórmula major * 10000 + minor * 100 + sub quando precisar de uma string legível, e lembre-se de que ele descreve a biblioteca cliente — não o servidor de banco de dados.
Funções relacionadas
- mysqli_get_client_info() — a versão da biblioteca cliente como uma string legível.
- mysqli_get_server_version() — a versão do servidor (requer conexão).
- mysqli_get_server_info() — a versão do servidor como uma string.
- mysqli_get_host_info() — o tipo de conexão e detalhes do host.