W3docs

get_proto_info

Erfahren Sie mehr über die Funktion mysqli_get_proto_info() in PHP, die die Protokollversion der MySQL-Verbindung zurückgibt.

Die Funktion mysqli_get_proto_info() gibt die Version des MySQL-Client/Server-Protokolls zurück, das von einer offenen Verbindung verwendet wird. Das Protokoll ist das Low-Level-Wire-Format, das die PHP MySQLi-Erweiterung und der MySQL-Server zum Austausch von Paketen nutzen — es ist nicht dasselbe wie die MySQL-Serverversion (dafür siehe mysqli_get_server_info()). Diese Seite behandelt die Syntax, Parameter, den Rückgabewert und ein ausführbares Beispiel der Funktion sowie den Anwendungsfall.

Syntax

Die Funktion ist sowohl im prozeduralen als auch im objektorientierten Stil verfügbar:

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

// Object-oriented style
$mysqli->protocol_version

Parameter

  • $mysql — ein MySQLi-Verbindungsobjekt, das von mysqli_connect() zurückgegeben wird (nur prozeduraler Stil).

Rückgabewert

Ein int, der die Protokollversion enthält. Für alle aktuellen MySQL-Server ist dies 10, was dem in MySQL 3.x eingeführten Protokoll entspricht, das bis heute verwendet wird. Der Wert ist eine Eigenschaft der Verbindung, daher muss eine offene Verbindung vorhanden sein, bevor die Funktion aufgerufen wird.

Einfaches Beispiel

Der klassische Aufruf erfolgt auf einer aktiven Verbindung. Ersetzen Sie die Anmeldedaten durch Ihre eigenen:

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

Hier öffnen wir eine Verbindung mit mysqli_connect(), prüfen, ob sie erfolgreich war, und übergeben das Verbindungsobjekt dann an mysqli_get_proto_info(). Die Funktion gibt eine ganze Zahl zurück, die wir mit echo ausgeben.

Objektorientierter Stil

Wenn Sie die objektorientierte MySQLi-API verwenden, lesen Sie die Eigenschaft protocol_version des Verbindungsobjekts, anstatt die prozedurale Funktion aufzurufen — beide geben denselben Wert zurück:

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

Wann würde ich das verwenden?

Im alltäglichen Anwendungscode benötigt man die Protokollversion so gut wie nie. Am nützlichsten ist sie für:

  • Diagnose und Protokollierung — Aufzeichnung von Verbindungsmetadaten zusammen mit mysqli_get_host_info() und mysqli_get_server_info() bei der Fehlersuche einer instabilen Verbindung.
  • Plausibilitätsprüfungen — Bestätigung, dass eine Verbindung tatsächlich aufgebaut wurde, bevor Abfragen ausgeführt werden, da der Aufruf nur bei einer offenen Verbindung einen sinnvollen Wert zurückgibt.

Für umfangreichere Verbindungsdetails stehen diese verwandten Funktionen zur Verfügung:

Fazit

Die Funktion mysqli_get_proto_info() ist eine einfache Möglichkeit, die ganzzahlige Protokollversion (10 auf modernen Servern) einer aktiven MySQLi-Verbindung auszulesen. Sie wird im Alltagsbetrieb selten benötigt, ist aber für Diagnosen, Protokollierung und die Überprüfung nützlich, ob die Anwendung über das erwartete Protokoll mit der Datenbank kommuniziert.

Übung

Übung
Was gibt mysqli_get_proto_info() zurück?
Was gibt mysqli_get_proto_info() zurück?
Was this page helpful?