可能的重复项:
新的 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
。