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


var_dump of result gives null value. But deeper inspection returns a integer

可能的重复项:
新的 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->数据库包含主机、数据库等的所有值。这行得通,我有联系。

现在,当我像这样var_dump结果时:

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

我明白这个:

对象(mysqli_result)[9]

公共"current_field"=>空

公共"field_count"=>空

公共"长度" => 空

公共"num_rows"=>空

公共"类型" => 空

但是,如前所述,它应该至少包含 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,但通过更深入的检查,它确实有一个值。

提前感谢,我真的很挣扎,因为我也没有收到任何错误。

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

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