gpt4 book ai didi

php - 如何使用 mysqli::fetch_object()?

转载 作者:行者123 更新时间:2023-12-04 02:11:14 27 4
gpt4 key购买 nike

人们通常如何将mysqli结果转化为对象?

在使用自定义类时,我找不到任何有关 fetch_object() 的示例。假设以下设置

class Test1 {
function __construct(array $data) { ... }
}

class Test2 {
function __construct(array $data) { ... }
}

假设我有多个具有相同构造函数的类,我如何动态实例化这些类?

我会想象这样的事情:

function customQuery($query, $class) {

// Get some data by mysqli query, assume we get the data as $result object
...

// Now I would like to store the data in an array with instances of $class
$array = array();
while ($obj = $result->fetch_object($class, ???) {
$array[] = $obj;
}

// Return the array with instances of $class
return $array;

}

我用什么作为问号的参数?我只知道 Test1 和 Test2 的类构造函数都需要一个关联数组作为输入(可能长度不一样!)。

最后我只是想做一些类似的事情

$arr1 = customQuery('SELECT id, product FROM test1 LIMIT 10', 'Test1');
$arr2 = customQuery('SELECT id, name, address FROM test2 LIMIT 10', 'Test2');

当然,如果您有更好的想法来实现我的目标,我将不胜感激。

最佳答案

看看“fetch_object”

你有一个参数 $class_name

来自文档:要实例化、设置属性并返回的类的名称。如果未指定,则返回一个 stdClass 对象。

它将自动创建给定类的实例并设置属性。所以不需要传递数组 http://www.php.net/manual/en/mysqli-result.fetch-object.php

多一点解释,

fetch_object 只是填充私有(private)属性等(PHP Magic...我不喜欢它)。

如果您的对象在构造函数中有必需的参数,但您想从数据库中获取它,则 fetch_object 允许您为构造函数定义参数,这样它就可以被构造而不是抛出警告/错误。

class Test {
private $title;
public function __construct($required) {

}
}

$mysql->fetch_object('Test'); //will trigger errors/warnings
$mysql->fetch_object('Test', array(null)); //won't

你可以做的是简单地获取一个数组并构造对象

function query($query, $class) {
$data = $query->fetch_assoc();
$instance = new $class($data);
return $instance;
}

关于php - 如何使用 mysqli::fetch_object()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com