當前位置: 首頁> 最新文章列表> 使用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?? 示例代碼:查詢並轉換為對象

假設你有一個名為users的表,結構如下:

id name email
1 Alice alice@m66.net
2 Bob 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();
?>

在這個例子中,每次循環$user都是一個stdClass對象,其中包含當前行的idnameemail屬性。

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();
}
?>

這樣,每次循環你都得到一個User實例,並且可以直接調用它的方法。

5?? 注意事項

  • 如果查詢結果為空, fetch_object()返回false

  • 如果指定了類名,類的屬性必須公開( public ),否則不能直接賦值。

  • fetch_object()每次只提取一行數據,需要配合循環使用。