W3docs

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(): int

Também existe um equivalente em estilo orientado a objetos na classe mysqli:

$mysqli->client_version; // property, not a method call

Lendo 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_version

Assim, 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: 80300

Decodificando 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.0

Quando 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, mysqlnd em vez de uma libmysqlclient do 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

Prática

Prática
O que mysqli_get_client_version() retorna?
O que mysqli_get_client_version() retorna?
Was this page helpful?