現在の位置: ホーム> 最新記事一覧> MySQLI :: STMT_INIT関数を介してデータベースフィールドのメタデータを取得するにはどうすればよいですか?

MySQLI :: STMT_INIT関数を介してデータベースフィールドのメタデータを取得するにはどうすればよいですか?

M66 2025-07-18

PHPでは、拡張機能を使用してデータベースを操作する場合、クエリ結果自体を取得するだけでなく、フィールド名、タイプ、長さなどのクエリの返されたフィールドの詳細を理解する必要がある場合があります。この情報はフィールドのメタデータと呼ばれます。

この記事では、特定の例を使用して、 mysqli :: stmt_initを使用してprepare()result_metadata()メソッドを組み合わせて、データベースフィールドのメタデータを取得する方法を説明します。

ステップ1:データベース接続を確立します

まず、 MySQLIクラスを使用してデータベースに接続する必要があります。

 <?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

if ($mysqli->connect_errno) {
    die('接続に失敗しました: ' . $mysqli->connect_error);
}
?>

ステップ2:SQLステートメントを初期化して準備します

次に、 stmt_init()を使用してmysqli_stmtオブジェクトを初期化し、 prepare()メソッドを使用してSQLクエリステートメントを準備します。

 <?php
$stmt = $mysqli->stmt_init();

if (!$stmt->prepare('SELECT id, name, email FROM users WHERE status = ?')) {
    die('前処理に失敗しました: ' . $stmt->error);
}
?>

ステップ3:パラメーターをバインドしてクエリを実行します

Status = 'Active'でユーザーを照会したいとします。

 <?php
$status = 'active';
$stmt->bind_param('s', $status);

if (!$stmt->execute()) {
    die('実行に失敗しました: ' . $stmt->error);
}
?>

ステップ4:メタデータを取得して表示します

次に、ポイントはここにあります - result_metadata()メソッドを呼び出して、クエリ結果のフィールドメタデータを取得します。

 <?php
$metadata = $stmt->result_metadata();

if ($metadata) {
    while ($field = $metadata->fetch_field()) {
        echo "フィールド名: " . $field->name . "<br>";
        echo "フィールドタイプ: " . $field->type . "<br>";
        echo "最大長: " . $field->max_length . "<br>";
        echo "<hr>";
    }
    $metadata->free();
} else {
    echo "メタデータはありません。";
}
?>

ここで、 fetch_field()はフィールドの詳細を含むオブジェクトを返し、一般的な属性には以下が含まれます。

  • 名前→フィールド名

  • タイプ→フィールドタイプ(数値コード、マニュアルを比較する必要があります)

  • max_length →フィールドの最大長(注:結果セットにのみ有効)

ステップ5:リソースを解放し、接続を閉じます

最後に、ステートメントをリリースし、データベース接続を閉じることを忘れないでください。

 <?php
$stmt->close();
$mysqli->close();
?>

サンプル出力

クエリが3つのフィールドID名前、および電子メールを返すと仮定すると、出力は次のとおりです。

 フィールド名: id
フィールドタイプ: 3
最大長: 0
-----------------------
フィールド名: name
フィールドタイプ: 253
最大長: 0
-----------------------
フィールド名: email
フィールドタイプ: 253
最大長: 0

フィールドタイプの数値は、 mysql_type_longを表す3など、mysqlマニュアルのタイプ定数を参照する必要があることに注意してください。253mysql_type_var_stringを表します。

まとめ