2

可能重复:
新的 Mysqli 对象为空

我刚开始为我的 MVC 框架构建我的数据库类。在构建它时,我正在尝试简单的查询和表以使其正常工作。

我试图查询以下内容:

选择 * 从 mvc_test

这应该返回 3 行:

1 | 测试

2 | 测试2

3 | 测试3

我使用以下方法查询:

<?php $this->result = $this->conn->query($this->q); ?>

$this->conn 在哪里:

<?php 
 $this->conn = new mysqli($this->reg->conf->database['host'],
 $this->reg->conf->database['user'],
 $this->reg->conf->database['password'],
 $this->reg->conf->database['database']);
?>

其中 $this->reg->conf->database 包含主机、数据库等的所有值。这有效,我有一个连接。

现在,当我 var_dump 的结果是这样的:

<?php var_dump($this->result); ?>

我明白了:

对象(mysqli_result)[9]

公共 'current_field' => 空

公共'field_count' => null

公共“长度”=> null

公共'num_rows' => null

公共'类型' => null

但是,如前所述,它应该至少包含 3 行,所以我希望 num_rows 为“3”。

现在,当我 var_dump num_rows 的结果是这样的:

<?php var_dump($this->result->num_rows); ?>

我得到一个'int 3'作为回应。

结论:在第一个 var_dump 中它为空,但通过更深入的检查,我得到了 3。所以它读取 3 行。当我添加另一行(第 4 行)时,它按预期返回 4。

我的问题是:为什么 var_dump 不能正常工作?为什么一开始它说 null,但经过更深入的检查,它确实有价值。

在此先感谢,我真的很努力解决这个问题,因为我也没有收到任何错误。

4

1 回答 1

5

该对象是“惰性”实现的,即它在实际需要之前不会从服务器检索数据(即您从结果对象访问某些内容)。

var_dump似乎不会触发属性获取器,因此它们显示为null.

于 2012-07-01T22:02:02.357 回答