PHPベースのデータベースアプリケーションを開発する場合、フィールド名、データ型、最大長などのデータベースクエリ結果のフィールドの構造情報を理解する必要があります。これは、テーブルの動的に生成、データ形式の検証、およびフォーム要素の自動生成にも非常に役立ちます。幸いなことに、PHPは強力な機能を提供します - mysqli_result :: fetch_fieldは、これらのフィールドメタデータを簡単に取得するのに役立ちます。
この記事では、mysqli_result :: fetch_field関数を使用してクエリ結果のフィールド構造を表示し、特定のコードの例を介して理解を深める方法についての包括的な理解を提供します。
mysqli_result :: fetch_field()は、結果セットの単一フィールドに関する情報を表すオブジェクトを返すMySqli_Resultクラスの方法です。メソッドが呼び出されるたびに、フィールドがなくなるまで次のフィールドの情報を返します。
返されたオブジェクトは、以下を含む複数のプロパティを含むstdclassオブジェクトです。
名前:フィールド名
orgname :元のフィールド名(エイリアスが使用されている場合)
表:フィールドが属するテーブル名
組織:元のテーブル名
def :デフォルト値(非推奨、常にnull )
DB :データベース名
カタログ:データベースディレクトリ(通常は「def」)
max_length :結果セットのこのフィールドの最大長
長さ:フィールドの定義長
charsetnr :文字セット番号
フラグ:フィールドのフラグビット(それが主要な鍵であるかどうか、それがヌルになる可能性があるかどうかなど)
タイプ:フィールドのタイプ( mysqli_type_stringなど)
デシマル:小数
以下は、データベースに接続し、クエリ結果のフィールドの構造情報を取得する方法を示す基本的な使用例です。
<code>&lt;?php //データベース接続パラメーター$ host = "localhost"; $ user = "root"; $ password = "your_password"; $ database = "test_db"; //データベース接続を確立します
$ conn = new mysqli($ host、$ user、$ password、$ database);
//接続を確認します
if($ conn-> connect_error){
die( "接続失敗:"。$ conn-> connect_error);
}
//クエリを実行します
$ sql = "id、username、email from users";
$ result = $ conn-> query($ sql);
if($ result-> num_rows> 0){
エコー "フィールド構造情報:<br> <br>";
while ($field = $result->fetch_field()) {
echo "フィールド名: " . $field->name . "<br>";
echo "所属表: " . $field->table . "<br>";
echo "原始フィールド名: " . $field->orgname . "<br>";
echo "タイプ: " . $field->type . "<br>";
echo "長さ: " . $field->length . "<br>";
echo "出来ますか NULL: " . ($field->flags & MYSQLI_NOT_NULL_FLAG ? "いいえ" : "はい") . "<br>";
echo "--------------------------<br>";
}
} それ以外 {
エコー「結果はありません。」;
}
//接続を閉じます
$ conn-> close();
?>
</code>
タイプは、フィールドタイプを表す整数定数を返します。
mysqli_type_long (整数)
mysqli_type_var_string (可変長文字列)
mysqli_type_datetime (datetime)
これらの定数を、マップの配列を定義することにより、より読みやすいテキストに変換できます。
同様に、フラグは、プライマリキーであるかどうか、自動的に増加するかどうかなど、フィールドのさまざまなプロパティを表すビットマスクです。ビット操作を使用して、フラグが存在するかどうかを判断できます。
ヘッダーを動的に生成する: fetch_field()を使用して、特に未知の列カウントのHTMLテーブルのヘッダーとしてフィールド名を動的に取得できます。
フィールド検証:フィールド構造を事前に取得すると、ユーザー入力やデータのインポート時にフィールドの種類と長さが期待を満たしていることを確認するのに役立ちます。
自動開発:フィールドメタデータを組み合わせて、自動フォームの生成とデータ検証ルールを開発する