结果的var_dump给出null值.但更深入的检查会返回整数

Jel*_*mer 2 php mysqli

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

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

我试图查询以下内容:

SELECT*FROM mvc_test

这应该返回3行:

1 | 测试

2 | TEST2

3 | TEST3

我使用以下方法来查询:

<?php $this->result = $this->conn->query($this->q); ?>
Run Code Online (Sandbox Code Playgroud)

$ 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']);
?>
Run Code Online (Sandbox Code Playgroud)

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

现在,当我var_dump结果如下:

<?php var_dump($this->result); ?>
Run Code Online (Sandbox Code Playgroud)

我明白了:

对象(mysqli_result)[9]

public'current_field'=> null

public'field_count'=> null

public'length'=> null

public'num_rows'=> null

public'type'=> null

但是,如前所述它应至少包含3行,所以我希望num_rows为'3'.

现在,当我var_dump结果的num_rows时,如下所示:

<?php var_dump($this->result->num_rows); ?>
Run Code Online (Sandbox Code Playgroud)

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

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

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

在此先感谢,我真的很挣这个,因为我也没有任何错误.

Thi*_*ter 5

该对象是"懒惰地"实现的,即它不会从服务器检索数据,直到它实际需要(即您从结果对象访问某些内容).

var_dump似乎没有触发属性getter所以它们显示为null.