現在の位置: ホーム> 最新記事一覧> mysqli_stmt :: result_metadataの完全なコードの例はありますか?結果セット構造を取得しますか?それを書く方法は?

mysqli_stmt :: result_metadataの完全なコードの例はありますか?結果セット構造を取得しますか?それを書く方法は?

gitbox 2025-06-08

PHPでは、 mysqli_stmt :: result_metadataは、準備されたステートメントに対応する結果セットのメタデータ(つまり、フィールド構造)を取得するために一般的に使用される方法です。この方法は、クエリの結果のために列情報を動的に生成し、バインディングコラムなどのさらなる操作を実行するのに非常に役立ちます。次に、 mysqli_stmt :: result_metadataを使用して結果セット構造を取得する方法を示す完全なコード例を示します。

1.データベースに接続します

まず、 mysqliを介してデータベースに接続する必要があります。既にMySQLデータベースを持っているとします。ここに接続の基本コードがあります。

 <?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'test_database';

// 接続を作成します
$conn = new mysqli($host, $username, $password, $dbname);

// 接続が成功しているかどうかを確認してください
if ($conn->connect_error) {
    die("接続に失敗しました: " . $conn->connect_error);
}
?>

2。SQLクエリを準備します

構造には、 ID名前電子メールの3つのフィールドが含まれているテーブルユーザーがあり、これらのフィールドのメタデータを取得する必要があるとします。最初にクエリステートメントを準備します。

 $sql = "SELECT id, name, email FROM users";
$stmt = $conn->prepare($sql);

if ($stmt === false) {
    die('MySQL prepare failed: ' . $conn->error);
}

3.結果セットメタデータを取得します

mysqli_stmt :: result_metadataメソッドを使用して、結果セットのメタデータを取得します。このメソッドは、クエリ結果のフィールド情報を含むmysqli_resultオブジェクトを返します。次に、フィールド情報を繰り返し、各フィールドの名前を出力します。

 $result_metadata = $stmt->result_metadata();

if ($result_metadata === false) {
    die('結果セットメタデータを取得できません');
}

$columns = [];
while ($column = $result_metadata->fetch_field()) {
    $columns[] = $column->name;
}

echo "クエリ結果のフィールド名:<br>";
foreach ($columns as $column_name) {
    echo $column_name . "<br>";
}

4。バインド列

フィールドのメタデータを取得した後、 mysqli_stmt :: bind_resultメソッドを使用して、結果の各列をPHP変数に結合できます。列をバインドして結果を取得する方法の例は次のとおりです。

 // バインド列
$stmt->bind_result($id, $name, $email);

// クエリを実行します
$stmt->execute();

// 結果を取得します
while ($stmt->fetch()) {
    echo "ID: $id, Name: $name, Email: $email <br>";
}

// 緊密な声明
$stmt->close();

5。完全な例

上記の部分を一緒にする完全なコード例を次に示します。

 <?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'test_database';

// 接続を作成します
$conn = new mysqli($host, $username, $password, $dbname);

// 接続が成功しているかどうかを確認してください
if ($conn->connect_error) {
    die("接続に失敗しました: " . $conn->connect_error);
}

$sql = "SELECT id, name, email FROM users";
$stmt = $conn->prepare($sql);

if ($stmt === false) {
    die('MySQL prepare failed: ' . $conn->error);
}

// 結果を取得します集元数据
$result_metadata = $stmt->result_metadata();

if ($result_metadata === false) {
    die('結果セットメタデータを取得できません');
}

$columns = [];
while ($column = $result_metadata->fetch_field()) {
    $columns[] = $column->name;
}

echo "クエリ結果のフィールド名:<br>";
foreach ($columns as $column_name) {
    echo $column_name . "<br>";
}

// バインド列
$stmt->bind_result($id, $name, $email);

// クエリを実行します
$stmt->execute();

// 結果を取得します
while ($stmt->fetch()) {
    echo "ID: $id, Name: $name, Email: $email <br>";
}

// 緊密な声明
$stmt->close();

// 接続を閉じます
$conn->close();
?>

6。概要

mysqli_stmt :: result_metadataを使用して、準備されたステートメントクエリの結果セット構造を簡単に取得します。フィールド情報を取得した後、必要に応じて列を動的にバインドしてクエリの結果を抽出できます。これは、複雑なクエリを扱い、動的ページを生成する場合に非常に便利です。