W3docs

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_proto_info() — простой способ получить целочисленную версию протокола (10 на современных серверах) активного соединения MySQLi. Она редко нужна в повседневной логике, но остаётся удобной для диагностики, логирования и подтверждения того, что приложение взаимодействует с базой данных по ожидаемому протоколу.

Практика

Практика
Что возвращает mysqli_get_proto_info()?
Что возвращает mysqli_get_proto_info()?
Was this page helpful?