PHP開発では、MySQLデータベースのバージョンを確認して、異なるバージョンに基づいて特定の操作を実行する必要があることがよくあります。 MySQLデータベースのバージョンは、特定のSQLクエリ、関数、または機能に影響を与える可能性があるため、PHPスクリプトを作成するときにMySQLのバージョンに基づいてプログラムの動作を動的に調整する方法を知ることが重要です。
この記事では、PHPスクリプトを使用してMySQL_Get_Server_Info関数を使用してMySQLバージョンを確認し、バージョン情報に基づいて対応する操作を実行する方法を紹介します。
MySQL_Get_Server_Infoは、MySQLデータベースサーバーのバージョン情報を取得できるPHPの組み込み関数です。この関数はPHP 5.xおよび以前のMySQL拡張機能で利用可能ですが、PHP 7以降ではMySQL拡張が放棄されており、 MySQLIまたはPDO_MYSQL拡張機能を使用することをお勧めします。
まず、MySQLデータベースに適切に接続されていることを確認してください。接続が成功したら、 mysql_get_server_info関数を呼び出してサーバーバージョン情報を取得できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// に接続します MySQL データベース</span></span><span>
</span><span><span class="hljs-variable">$connection</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_connect</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'root'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$connection</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'无法に接続しますデータベース: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">mysql_error</span></span><span>());
}
</span><span><span class="hljs-comment">// 得る MySQL バージョン情報</span></span><span>
</span><span><span class="hljs-variable">$mysql_version</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_get_server_info</span></span><span>(</span><span><span class="hljs-variable">$connection</span></span><span>);
</span><span><span class="hljs-comment">// 出力 MySQL バージョン</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現在 MySQL バージョン是: "</span></span><span> . </span><span><span class="hljs-variable">$mysql_version</span></span><span>;
</span><span><span class="hljs-comment">// 关闭データベース连接</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mysql_close</span></span><span>(</span><span><span class="hljs-variable">$connection</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>前述のように、 mysql_get_server_infoは時代遅れの関数であるため、代わりにmysqli拡張機能を使用することをお勧めします。 MySQLI拡張機能では、MySQLバージョンを取得する方法は次のとおりです。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// に接続します MySQL データベース</span></span><span>
</span><span><span class="hljs-variable">$connection</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_connect</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'root'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$connection</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'无法に接続しますデータベース: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">mysqli_connect_error</span></span><span>());
}
</span><span><span class="hljs-comment">// 得る MySQL バージョン情報</span></span><span>
</span><span><span class="hljs-variable">$mysql_version</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_get_server_info</span></span><span>(</span><span><span class="hljs-variable">$connection</span></span><span>);
</span><span><span class="hljs-comment">// 出力 MySQL バージョン</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現在 MySQL バージョン是: "</span></span><span> . </span><span><span class="hljs-variable">$mysql_version</span></span><span>;
</span><span><span class="hljs-comment">// 关闭データベース连接</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mysqli_close</span></span><span>(</span><span><span class="hljs-variable">$connection</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>MySQLバージョン情報を取得した後、バージョン番号に従って異なる操作を実行できます。たとえば、いくつかの機能はMySQLのより高いバージョンで使用できる場合がありますが、下位バージョンでは使用できません。条件付きステートメントを使用して、MySQLのバージョンを確認し、異なるバージョンに従って異なる操作を実行できます。
MySQLバージョン番号に基づいて特定の機能を使用するかどうかを決定する方法を示す例を以下に示します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// に接続します MySQL データベース</span></span><span>
</span><span><span class="hljs-variable">$connection</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_connect</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'root'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$connection</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'无法に接続しますデータベース: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">mysqli_connect_error</span></span><span>());
}
</span><span><span class="hljs-comment">// 得る MySQL バージョン情報</span></span><span>
</span><span><span class="hljs-variable">$mysql_version</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_get_server_info</span></span><span>(</span><span><span class="hljs-variable">$connection</span></span><span>);
</span><span><span class="hljs-comment">// 判断 MySQL バージョン</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">version_compare</span></span><span>(</span><span><span class="hljs-variable">$mysql_version</span></span><span>, </span><span><span class="hljs-string">'5.7'</span></span><span>, </span><span><span class="hljs-string">'>='</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"MySQL バージョン为 5.7 または高,新機能が利用可能です。"</span></span><span>;
</span><span><span class="hljs-comment">// 新しい機能関連操作を実行します</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"MySQL バージョン低于 5.7,执行旧バージョン操作。"</span></span><span>;
</span><span><span class="hljs-comment">// 执行旧バージョン相关操作</span></span><span>
}
</span><span><span class="hljs-comment">// 关闭データベース连接</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mysqli_close</span></span><span>(</span><span><span class="hljs-variable">$connection</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>version_compareは、2つのバージョン番号を比較するための非常に実用的なPHP関数です。 3つの値を返します。
最初のバージョン番号が2番目のバージョン番号より大きい場合は、1を返します。
2つのバージョン番号が等しい場合、0を返します。
最初のバージョン番号が2番目のバージョン番号よりも小さい場合は、-1を返します。
このようにして、MySQLバージョンに基づいてさまざまなアクションを実行する柔軟性を持つことができます。
mysql_get_server_infoまたはmysqli_get_server_info関数を使用する場合、最初にPHPとMySQLデータベースの間の接続が成功することを確認する必要があります。
特にPHP 7以降では、 MySQLIまたはPDO_MYSQL拡張機能を使用することをお勧めします。MySQL拡張は放棄されています。
MySQLバージョンを判断する場合、正規表現を使用して、複雑なバージョン情報をさらに処理してロジックの精度を確保できます。
上記の方法により、PHPスクリプトのMySQLのバージョンに基づいて異なる操作を簡単に実行でき、プログラムがMySQLデータベースの複数のバージョンと互換性があることを確認し、コードの柔軟性と堅牢性を向上させます。
関連タグ:
MySQL