データベース操作にPHPのMySQLI拡張機能を使用する場合、 MySQLI_STMT :: ATTR_GET関数は、比較的不人気ですが非常に有用な関数です。これは、プリプロセシングステートメントオブジェクトの属性値を取得するために使用でき、それにより、現在のMySQLサーバーとクライアントによってプロパティ定数がサポートされているかどうかを判断するのに役立ちます。この記事では、mysqli_stmt :: attr_get関数を使用して、属性定数のサポートを判断し、コードの例を示す方法を詳細に紹介します。
mysqli_stmt :: attr_getは、mysqliオブジェクト指向のインターフェイスのmysqli_stmtクラスの方法であり、プリプロセシングステートメントのプロパティを取得するために使用されます。属性定数をパラメーターとして受け入れ、属性の現在の値を返します。プロパティがサポートされていないか無効でない場合、通常、 falseが返されます。
一般的な属性定数は次のとおりです。
mysqli_stmt_attr_update_max_length
mysqli_stmt_attr_cursor_type
mysqli_stmt_attr_prefetch_rows
mysqli_stmt_attr_cursor_name
これらのプロパティの値を取得することにより、現在の環境がこれらのプロパティをサポートするかどうかを判断できます。
MySQLの異なるバージョンとクライアント駆動型のバージョン間の実装の違いにより、特定の環境では一部のプロパティがサポートされない場合があります。コードがこれらのプロパティを直接設定または取得すると、エラーまたは例外が生じる場合があります。属性がサポートされているかどうかを判断することにより、開発者はプログラムのクラッシュを回避し、プログラムの堅牢性と互換性を改善できます。
主なアイデアは、 mysqli_stmt :: attr_getに電話して、特定の属性の値を取得することです。返品値が偽の場合、プロパティはサポートされていません。それ以外の場合、この属性がサポートされています。
サンプルコードは次のとおりです。
<?php
// データベースに接続します
$mysqli = new mysqli('m66.net', 'username', 'password', 'database');
if ($mysqli->connect_errno) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// 前処理ステートメントを準備します
$stmt = $mysqli->prepare("SELECT ?");
// 検出する必要がある属性定数
$attributes = [
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH,
MYSQLI_STMT_ATTR_CURSOR_TYPE,
MYSQLI_STMT_ATTR_PREFETCH_ROWS,
MYSQLI_STMT_ATTR_CURSOR_NAME,
];
// トラバーサル特性,テストサポートステータス
foreach ($attributes as $attr) {
$value = $stmt->attr_get($attr);
if ($value === false) {
echo "属性定数 {$attr} サポートまたは無効ではありません。\n";
} else {
echo "属性定数 {$attr} サポート,現在の値はです: {$value}\n";
}
}
// 緊密なステートメントと接続
$stmt->close();
$mysqli->close();
?>
データベースへの接続:ここで、ホスト名は要件を満たすM66.netとして書かれています。
準備ステートメント: $ mysqli-> prepareを使用して、シンプルな前処理ステートメントを作成します。
属性検出:検出する必要がある属性を配列に入れ、attribute値をattr_getを介して取得します。
判断結果: Falseが返された場合、属性がサポートされていないことを意味します。そうしないと、現在の属性値が表示されます。
mysqli_stmt :: attr_getを使用する前に、ステートメントが正常に準備されていることを確認する必要があります。
すべてのMySQL ServerバージョンまたはMySQLIクライアントドライバーがすべてのプロパティをサポートするわけではありません。
プロパティを設定する必要がある場合は、 mysqli_stmt :: attr_setメソッドを使用してください。また、最初にサポートの状況を決定する必要があります。
mysqli_stmt :: attriblet関数は、プリプロセシングステートメントの属性値を取得するだけでなく、特定の属性がサポートされているかどうかを判断するために使用できます。この例を使用すると、環境サポートを簡単に検出し、さまざまな環境でプログラムが安定して実行されるようにすることができます。データベースと対話する複雑なアプリケーションを作成して、コードの堅牢性を向上させる複雑なアプリケーションを作成する場合、この判断を追加することをお勧めします。