W3docs

get_proto_info

Guida alla funzione mysqli_get_proto_info() in PHP, usata per ottenere la versione del protocollo MySQL di una connessione aperta.

La funzione mysqli_get_proto_info() restituisce la versione del protocollo client/server MySQL utilizzato da una connessione aperta. Il protocollo è il formato wire di basso livello che l'estensione PHP MySQLi e il server MySQL usano per scambiarsi i pacchetti — non corrisponde alla versione del server MySQL (per quella, consulta mysqli_get_server_info()). Questa pagina tratta la sintassi della funzione, i parametri, il valore restituito e un esempio eseguibile, oltre ai casi in cui potrebbe essere utile.

Sintassi

La funzione esiste sia nello stile procedurale che in quello orientato agli oggetti:

// Procedural style
mysqli_get_proto_info(mysqli $mysql): int

// Object-oriented style
$mysqli->protocol_version

Parametro

  • $mysql — un object di connessione MySQLi restituito da mysqli_connect() (solo stile procedurale).

Valore restituito

Un int contenente la versione del protocollo. Per tutti i server MySQL attuali questo valore è 10, corrispondente al protocollo introdotto con MySQL 3.x e ancora in uso oggi. Il valore è una proprietà della connessione, quindi è necessaria una connessione aperta prima di chiamare questa funzione.

Esempio base

Il modo classico per chiamarla è su una connessione attiva. Sostituisci le credenziali con le tue:

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

Qui apriamo una connessione con mysqli_connect(), verifichiamo che sia riuscita, poi passiamo l'object di connessione a mysqli_get_proto_info(). La funzione restituisce un intero che stampiamo con echo.

Stile orientato agli oggetti

Se utilizzi l'API MySQLi orientata agli oggetti, leggi la proprietà protocol_version dell'object di connessione invece di chiamare la funzione procedurale — entrambi restituiscono lo stesso valore:

<?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 usarla?

Nel codice applicativo quotidiano raramente si ha bisogno della versione del protocollo. È più utile per:

  • Diagnostica e logging — registrare i metadati della connessione insieme a mysqli_get_host_info() e mysqli_get_server_info() quando si risolve un problema su una connessione instabile.
  • Controlli di sanità — confermare che una connessione sia effettivamente stabilita prima di eseguire query, poiché la funzione restituisce un valore significativo solo su un collegamento aperto.

Per maggiori dettagli sulla connessione, consulta queste funzioni correlate:

Conclusione

La funzione mysqli_get_proto_info() è un modo semplice per leggere la versione intera del protocollo (10 sui server moderni) di una connessione MySQLi attiva. Raramente è necessaria nella logica quotidiana, ma rimane utile per diagnostica, logging e per verificare che l'applicazione stia comunicando con il database tramite il protocollo previsto.

Esercizio

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