当前位置: 首页> 最新文章列表> 使用 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 的表,结构如下:

idnameemail
1Alicealice@m66.net
2Bobbob@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() 每次只提取一行数据,需要配合循环使用。