Возможный дубликат:
Новый объект Mysqli – Null
Я только начал с создания моего класса базы данных для моей MVC-структуры. При создании этого я экспериментирую с простыми запросами и таблицами, чтобы он работал правильно.
Я пытался запросить следующее:
SELECT * FROM mvc_test
Это должно возвращать 3 строки:
1 | контрольная работа
2 | test2
3 | test3
Я использую следующий метод для запроса:
<?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]
public 'current_field' => null
public 'field_count' => null
public 'lengths' => null
public 'num_rows' => null
public 'type' => 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 работает неправильно? Почему он сначала говорит «нуль», но с более глубоким контролем он имеет значение.
Спасибо заранее, я действительно борюсь с этим, так как у меня тоже нет ошибок.
Объект реализуется «лениво», т. Е. Он не извлекает данные с сервера до тех пор, пока он не понадобится (т.е. вы получаете доступ к чему-либо из объекта результата).
var_dump
, похоже, не запускает свойство getters, поэтому они отображаются как null
.