W3docs

get_client_version

Scopri la funzione mysqli_get_client_version() in PHP, che restituisce la versione della libreria client MySQL come numero intero.

La funzione mysqli_get_client_version() restituisce la versione della libreria client MySQL con cui è stato compilato PHP, codificata come un singolo intero. Questa pagina spiega cosa significa tale intero, come decodificarlo in una stringa di versione leggibile e quando vale la pena verificare questo valore.

Cosa fa la funzione

mysqli_get_client_version() è una funzione MySQLi integrata. Riporta la versione della libreria client (come mysqlnd o libmysqlclient) che PHP utilizza per comunicare con un server MySQL — non la versione del server MySQL stesso, e nemmeno la versione di PHP.

Due caratteristiche la rendono pratica:

  • Non richiede argomenti e non necessita di nessuna connessione aperta. Puoi chiamarla prima di connetterti a qualsiasi database, il che è utile nei controlli di avvio o nella diagnostica dell'ambiente.
  • Restituisce un intero, quindi il valore è facile da confrontare numericamente (ad esempio, "la libreria client è almeno alla versione 8.0?").

Per ispezionare la versione del server, utilizza invece le funzioni companion basate sulla connessione, disponibili in fondo a questa pagina.

Sintassi

mysqli_get_client_version(): int

Esiste anche un equivalente in stile oggetto sulla classe mysqli:

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

Leggere l'intero

L'intero non è un semplice numero di versione — racchiude la versione principale, quella secondaria e la sotto-versione in un unico valore con questa formula:

main_version * 10000 + minor_version * 100 + sub_version

Quindi una libreria client alla versione 8.0.3 viene riportata come 80003, e 8.3.0 come 80300. La sezione successiva mostra come trasformare l'intero grezzo in una stringa leggibile.

Esempio di base

L'utilizzo più semplice stampa l'intero grezzo:

<?php
$client_version = mysqli_get_client_version();

printf("MySQL client library version number: %d\n", $client_version);
?>

Per una versione della libreria client 8.3.0, questo stampa:

MySQL client library version number: 80300

Decodificare in una versione leggibile

Poiché l'intero grezzo è raramente utile da solo, decodificalo con semplici operazioni aritmetiche sui numeri interi:

<?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);
?>

Per un valore grezzo di 80300, questo produce:

Client library version: 8.3.0

Quando usarla

  • Diagnostica all'avvio: registra la versione della libreria client in modo che i ticket di assistenza la includano senza un ulteriore accesso al server.
  • Controllo delle funzionalità: alcune funzionalità di MySQLi dipendono dalla libreria client, quindi puoi confrontare numericamente l'intero prima di affidarti a esse.
  • Verifica della build: conferma che un'immagine distribuita sia stata compilata con la libreria client attesa (ad es. mysqlnd anziché una libmysqlclient di sistema).

Errori comuni

  • Non è la versione del server. Una libreria client moderna può comunicare con un server più vecchio e viceversa; non dedurre mai le capacità del server da questo valore.
  • Confronta interi, non stringhe. Poiché il formato ha larghezza fissa ma non è zero-padded per la visualizzazione, confronta gli interi grezzi ($version >= 80000) anziché analizzare la stringa decodificata.
  • Stile procedurale vs. stile oggetto. mysqli_get_client_version() è una funzione; la forma ad oggetto è la proprietà $mysqli->client_version, senza parentesi.

Conclusione

mysqli_get_client_version() fornisce la versione della libreria client MySQL come un singolo intero codificato, senza richiedere alcuna connessione. Decodificalo con la formula major * 10000 + minor * 100 + sub quando hai bisogno di una stringa leggibile, e ricorda che descrive la libreria client — non il server del database.

Funzioni correlate

Esercizio

Pratica
Cosa restituisce mysqli_get_client_version()?
Cosa restituisce mysqli_get_client_version()?
Was this page helpful?