mysqli :: $ client_versionは、 mysqliクラスの静的プロパティです。 PHPが使用するMySQLクライアントライブラリのバージョンを表す整数を返します。たとえば、クライアントバージョンがmysqlnd 8.0.30の場合、 mysqli :: $ client_versionによって返される値は80030である場合があります。
このプロパティでは、 MySQLIオブジェクトのインスタンス化に直接アクセスする必要はなく、環境の検出やデバッグに最適です。
使用の簡単な例は次のとおりです。
<?php
echo 'MySQL クライアントバージョン: ' . mysqli::$client_version;
?>
上記のコードを実行した後、ブラウザは次のようなものを出力します。
MySQL クライアントバージョン: 80030
この返品値は整数であり、文字列の形のバージョン番号ではないことに注意してください。より直感的なバージョン形式を取得するには、それを解析する必要があります。
8.0.30などの数学操作を介して、整数形式のバージョン番号を文字列形式に変換できます。ヘルパー関数の例は次のとおりです。
<?php
function formatClientVersion($versionInt) {
$major = (int)($versionInt / 10000);
$minor = (int)(($versionInt % 10000) / 100);
$patch = $versionInt % 100;
return "$major.$minor.$patch";
}
$versionInt = mysqli::$client_version;
echo 'MySQL クライアントバージョン(形式): ' . formatClientVersion($versionInt);
?>
出力は似ています。
MySQL クライアントバージョン(形式): 8.0.30
この形式は読みやすく、バージョンの判断に直接使用するか、構成ファイルに記録できます。
アプリケーションが特定のバージョンの後にのみ利用可能なMySQL機能に依存している場合、このプロパティを使用して簡単なバージョン検出を行うことができます。例えば:
<?php
if (mysqli::$client_version < 80000) {
die('現在 MySQL クライアントバージョン过低,アップグレードしてください 8.0.0 または後で。');
}
?>
これにより、操作の開始時に互換性のない環境を速やかに終了し、後で確認するのがより困難な問題を回避します。
このプロパティは、データベースサーバーバージョンではなく、MySQLクライアントライブラリバージョンを返します。
サーバーのバージョンを取得するには、接続オブジェクトを介して$ mysqli-> server_infoにアクセスする必要があります。
異なるシステムまたはPHPコンパイル方法は、異なるクライアントライブラリを使用する場合があります。
たとえば、MySQLND(MySQLネイティブドライバー)またはlibmysQlClientを使用すると、クライアントの動作とバージョン情報が影響します。
接続プールまたはマルチ接続環境を使用している場合は、バージョンのソースを混同しないように注意してください。
PHPのphpinfo()関数を介して、現在ロードされているクライアントライブラリバージョン情報を表示できます。通常、 MySQLI :: $ client_versionによって返された値と一致するMySqlndまたはmysqliモジュールセクションにバージョン番号が表示されます。
たとえば、検出ページを直接展開することもできます。
<?php
header('Content-Type: application/json');
echo json_encode([
'client_version_int' => mysqli::$client_version,
'client_version_formatted' => formatClientVersion(mysqli::$client_version),
'check_url' => 'https://gitbox.net/check-mysql-client-version'
]);
?>
このページは、PHP-MYSQL環境の互換性をすばやく監査するために、システム監視ツールに統合できます。