W3docs

get_client_version

В этой статье рассматривается функция mysqli_get_client_version() в PHP, возвращающая версию клиентской библиотеки MySQL в виде целого числа.

Функция mysqli_get_client_version() возвращает версию клиентской библиотеки MySQL, с которой собрана ваша установка PHP, в виде единого целого числа. На этой странице объясняется, что означает это число, как его декодировать в читаемую строку версии и когда имеет смысл его проверять.

Что делает функция

mysqli_get_client_version() — встроенная функция MySQLi. Она возвращает версию клиентской библиотеки (например, mysqlnd или libmysqlclient), которую PHP использует для связи с сервером MySQL — не версию самого сервера MySQL и не вашу версию PHP.

Два свойства делают её удобной:

  • Не принимает аргументов и не требует открытого соединения. Её можно вызвать до подключения к любой базе данных, что удобно при стартовых проверках или диагностике окружения.
  • Возвращает целое число, поэтому значение легко сравнивать численно (например, «имеет ли клиент версию не ниже 8.0?»).

Чтобы вместо этого получить версию сервера, используйте связанные функции на основе соединения, ссылки на которые приведены в конце страницы.

Синтаксис

mysqli_get_client_version(): int

Существует также объектный эквивалент в классе mysqli:

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

Чтение целого числа

Целое число — не обычный номер версии: оно упаковывает основную, второстепенную и дополнительную версии в одно значение по формуле:

main_version * 10000 + minor_version * 100 + sub_version

Таким образом, клиентская библиотека версии 8.0.3 возвращает 80003, а 8.3.080300. В следующем разделе показано, как преобразовать сырое целое число обратно в читаемую строку.

Базовый пример

Простейший пример выводит сырое целое число:

<?php
$client_version = mysqli_get_client_version();

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

Для клиентской библиотеки версии 8.3.0 будет выведено:

MySQL client library version number: 80300

Декодирование в читаемую версию

Поскольку сырое целое число редко полезно само по себе, декодируйте его с помощью простой целочисленной арифметики:

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

Для значения 80300 будет выведено:

Client library version: 8.3.0

Когда использовать

  • Стартовая диагностика: запишите версию клиентской библиотеки в лог, чтобы обращения в службу поддержки содержали её без лишних запросов к серверу.
  • Ограничение функций: некоторые функции MySQLi зависят от клиентской библиотеки, поэтому можно численно сравнить целое число перед их использованием.
  • Проверка сборки: убедитесь, что задеплоенный образ скомпилирован с ожидаемой клиентской библиотекой (например, mysqlnd, а не системным libmysqlclient).

Распространённые ошибки

  • Это не версия сервера. Современная клиентская библиотека может работать со старым сервером и наоборот; никогда не делайте выводы о возможностях сервера на основе этого значения.
  • Сравнивайте целые числа, а не строки. Поскольку формат псевдо-фиксированной ширины, но не дополнен нулями для отображения, сравнивайте сырые целые числа ($version >= 80000), а не разбирайте декодированную строку.
  • Процедурный vs. объектный стиль. mysqli_get_client_version() — это функция; объектная форма — свойство $mysqli->client_version, без скобок.

Заключение

mysqli_get_client_version() возвращает версию клиентской библиотеки MySQL в виде единого закодированного целого числа без необходимости соединения. Декодируйте его по формуле major * 10000 + minor * 100 + sub, когда нужна читаемая строка, и помните: оно описывает клиентскую библиотеку, а не сервер базы данных.

Связанные функции

Практика

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