現在の位置: ホーム> 最新記事一覧> データベースクエリの結果をMySQLI_RESULT :: fetch_object()を使用してオブジェクトに変換する方法?

データベースクエリの結果をMySQLI_RESULT :: fetch_object()を使用してオブジェクトに変換する方法?

M66 2025-05-17

PHPでは、データベース操作を実行するために使用する場合、通常、 mysqli_query()を使用してクエリを実行し、 mysqli_resultオブジェクトを使用して結果を取得します。クエリの結果を直接オブジェクトに変換する場合は、 mysqli_result :: fetch_object()メソッドを使用できます。

この記事では、簡単な例でそれを使用する方法について一歩ずつ説明します。

1 ?? mysqli_result :: fetch_object()とは何ですか?

fetch_object()は、 mysqli_resultクラスの方法であり、クエリ結果から現在の行を取得し、オブジェクトとして返すために使用されます。デフォルトでは、プロパティ名がデータベースのフィールド名に対応する標準オブジェクト( STDCLASS )を返します。

また、クラス名を渡し、指定されたクラスのインスタンスをメソッドに返すことも、オブジェクト属性にフィールド値を割り当てることもできます。

2 ??基本的な構文

object mysqli_result::fetch_object ([ string $class_name = "stdClass" [, array $params ]] )
  • $ class_name :インスタンス化するクラス名、デフォルトはstdclassです。

  • $ params :クラス名が指定されている場合、コンストラクターパラメーターを渡すことができます。

3 ??サンプルコード:クエリとオブジェクトへの変換

ユーザーと呼ばれるテーブルがあるとしますが、構造は次のとおりです。

id名前メール
1アリスalice@m66.net
2ボブbob@m66.net

これがサンプルコードです:

 <?php
// データベースに接続します
$mysqli = new mysqli("localhost", "username", "password", "database");

// 接続を確認してください
if ($mysqli->connect_errno) {
    echo "接続に失敗しました: " . $mysqli->connect_error;
    exit();
}

// クエリを実行します
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);

if ($result) {
    while ($user = $result->fetch_object()) {
        echo "ID: " . $user->id . "<br>";
        echo "Name: " . $user->name . "<br>";
        echo "Email: " . $user->email . "<br><br>";
    }
    $result->free();
} else {
    echo "クエリに失敗しました: " . $mysqli->error;
}

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

この例では、各ループ$ユーザーは、現在の行のID名前電子メールの属性を含むSTDCLASSオブジェクトです。

4 ??カスタムクラスを使用します

また、 fetch_object()に、次のような特定のクラスオブジェクトを返すこともできます。

 <?php
class User {
    public $id;
    public $name;
    public $email;

    public function display() {
        echo "[$this->id] $this->name <$this->email><br>";
    }
}

$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);

if ($result) {
    while ($user = $result->fetch_object('User')) {
        $user->display();
    }
    $result->free();
}
?>

このようにして、ループするたびにユーザーインスタンスを取得し、そのメソッドを直接呼び出すことができます。

5 ??メモ

  • クエリの結果が空の場合、 fetch_object()falseを返します。

  • クラス名が指定されている場合、クラスの属性を公開する必要があります。そうしないと、値を直接割り当てることはできません。

  • fetch_object()は、一度に1列のデータのみを抽出するため、ループで使用する必要があります。