我能够在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();
在第一个代码示例中