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.0 — 80300. В следующем разделе показано, как преобразовать сырое целое число обратно в читаемую строку.
Базовый пример
Простейший пример выводит сырое целое число:
<?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_info() — версия клиентской библиотеки в виде читаемой строки.
- mysqli_get_server_version() — версия сервера (требуется соединение).
- mysqli_get_server_info() — версия сервера в виде строки.
- mysqli_get_host_info() — тип соединения и сведения о хосте.