在 PHP 中索引 MySQLi 对象时遇到问题



我能够在foreach循环中成功迭代所述MySQLi对象,如下所示:

// Retrieving accounts
$stmt = $conn->prepare("SELECT * FROM accounts");
$stmt->execute();
$accounts = $stmt->get_result();
// Iterating over object
foreach ($accounts as $account) {
print_r($account);
}

。因此,我认为这也行得通:

print_r($accounts[0]);

。但它没有,因为我收到此错误消息:

致命错误:

未捕获错误:无法使用 mysqli_result 类型的对象作为数组

如果可能的话,有谁知道我将如何正确索引类似于我正在尝试的MySQLi对象?

虽然 PHP 的主集合是一个数组,但它也支持通过 Iterator 和 Traversable 接口使用对象的自定义集合。后一个接口不适用于用户土地代码,但核心和扩展可以使用它并实现自己的逻辑,这就是get_result实际所做的。该接口也没有给出任何实际的方法,它只是基本上是foreach构造的标识符:

实现此接口的内部(内置(类可以在 foreach 构造中使用,不需要实现 IteratorAggregate 或 Iterator。

如果mysqli支持Iterator,你将可以访问基于键的索引,但我猜它们对mysql来说真的没有意义。

我通过简单地更改解决了我的问题

$accounts = $stmt->get_result();

$accounts = $stmt->get_result()->fetch_all(); 

在第一个代码示例中

最新更新