mysqli ::更新はmysqliクラスの方法であり、その定義は次のとおりです。
public mysqli::refresh (int $options): bool
整数パラメーター$オプションを受信します。これは、更新動作を制御するために使用される1つ以上の定数の組み合わせです。例えば:
mysqli_refresh_grant
mysqli_refresh_log
mysqli_refresh_tables
mysqli_refresh_hosts
mysqli_refresh_status
mysqli_refresh_threads
これらの定数は、ビットワイズまたは( | )で組み合わせて使用できます。
MYSQLI_REFRESH_TABLES | MYSQLI_REFRESH_STATUS
MySQLI_REFRESH_TABLESは、データテーブルキャッシュのリフレッシュを示すために使用される一定です。コードの実行中にテーブル構造を変更し(フィールドの追加、インデックスの変更など)、現在の接続がこれらの変更をすぐに認識できることを期待する場合、 mysqli :: refresh(mysqli_refresh_tables)を呼び出すことができます。
これは、長い間実行されるプログラムや、スクリプトを通じてテーブル構造を定期的に維持するプログラムに非常に役立ちます。
mysqli :: mysqli_refresh_tables定数を使用してmysqli ::更新方法を使用する方法を示す完全な例を示します。
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
// 接続を確認してください
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// データテーブルのキャッシュを更新します
if ($mysqli->refresh(MYSQLI_REFRESH_TABLES)) {
echo "データテーブルの更新に正常に。\n";
} else {
echo "データテーブルの更新に失敗しました。\n";
}
$mysqli->close();
この例では、ローカルデータベースサーバーに接続し、 mysqli_refresh_tablesで更新メソッドを呼び出して渡し、成功後にプロンプトを出力します。
複数の更新オプションを組み合わせることもできます。
$mysqli->refresh(MYSQLI_REFRESH_TABLES | MYSQLI_REFRESH_STATUS);
一部の自動展開プロセスでは、スクリプトはデータベース構造を更新した直後にクエリを実行する場合があります。キャッシュされたメタデータによって引き起こされるエラーを回避するために、更新方法を呼び出すことで、最新の構造が使用されることを保証できます。
たとえば、一部のSAASプラットフォームにより、ユーザーはフィールドを動的に追加したり、テーブル構造を拡張したりできます。このシステムでは、mysqli :: refresh(mysqli_refresh_tables)を使用して、アプリケーションレイヤーコードがタイムリーに構造的な変化を認識できるようにすることができます。
この記事では主にmysqli_refresh_tablesについて説明しますが、スクリプトを使用してアクセス許可(認定ユーザーなど)を変更する場合は、 mysqli_refresh_grantを使用して許可テーブルを更新できます。
$mysqli->refresh(MYSQLI_REFRESH_GRANT);
更新方法は、データベース内の実際のデータまたは構造を変更せず、 MySQLIクライアントに内部キャッシュのリロードを強制するだけです。
すべてのMySQLサーバー構成が、サーバーバージョンと設定に応じて、すべてのタイプの更新操作をサポートするわけではありません。
更新メソッドを呼び出すときに無効な一定の組み合わせに渡すと、エラーを報告しない場合がありますが、役割はありません。