get_proto_info
Функция mysqli_get_proto_info() в PHP возвращает версию протокола, используемого соединением MySQL. Синтаксис, параметры и пример.
Функция mysqli_get_proto_info() возвращает версию протокола MySQL клиент/сервер, используемого открытым соединением. Протокол — это низкоуровневый формат обмена данными между расширением PHP MySQLi и сервером MySQL — он не совпадает с версией самого сервера MySQL (для этого см. mysqli_get_server_info()). На этой странице рассматриваются синтаксис функции, параметры, возвращаемое значение и рабочий пример, а также ситуации, в которых она действительно может понадобиться.
Синтаксис
Функция доступна в процедурном и объектно-ориентированном стилях:
// Procedural style
mysqli_get_proto_info(mysqli $mysql): int
// Object-oriented style
$mysqli->protocol_versionПараметр
$mysql— объект соединения MySQLi, возвращаемый функциейmysqli_connect()(только процедурный стиль).
Возвращаемое значение
int с версией протокола. Для всех современных серверов MySQL это значение равно 10 — протокол, введённый ещё в MySQL 3.x и используемый по сей день. Значение является свойством соединения, поэтому перед его вызовом необходимо открыть соединение.
Базовый пример
Классический способ вызова — на активном соединении. Замените учётные данные своими:
<?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);
?>Здесь мы открываем соединение с помощью mysqli_connect(), проверяем его успешность, а затем передаём объект соединения в mysqli_get_proto_info(). Функция возвращает целое число, которое мы выводим с помощью echo.
Объектно-ориентированный стиль
Если вы используете объектно-ориентированный API MySQLi, считывайте свойство protocol_version объекта соединения вместо вызова процедурной функции — оба варианта возвращают одно и то же значение:
<?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();
?>Когда это использовать?
В повседневном коде приложений версия протокола почти никогда не нужна. Она наиболее полезна для:
- Диагностики и логирования — записи метаданных соединения вместе с
mysqli_get_host_info()иmysqli_get_server_info()при отладке нестабильного соединения. - Проверок работоспособности — подтверждения того, что соединение действительно установлено перед выполнением запросов, поскольку функция возвращает осмысленное значение только при открытом соединении.
Для получения более подробных сведений о соединении обратитесь к этим связанным функциям:
mysqli_get_server_info()— строка с версией сервера MySQL.mysqli_get_host_info()— имя хоста и тип соединения (TCP/IP, сокет и т.д.).mysqli_get_client_info()— версия клиентской библиотеки MySQL.
Заключение
Функция mysqli_get_proto_info() — простой способ получить целочисленную версию протокола (10 на современных серверах) активного соединения MySQLi. Она редко нужна в повседневной логике, но остаётся удобной для диагностики, логирования и подтверждения того, что приложение взаимодействует с базой данных по ожидаемому протоколу.