Я пытаюсь написать собственный класс для MySQLi, но при использовании num_rows
я все время получаю сообщение об ошибке «Попытка получить свойство не-объекта в». Может ли кто-нибудь помочь?
class db { private $host = "***"; private $user = "***"; private $pass = "***"; private $database; private $connection; private $result; public $sql; function __construct($database) { if (!empty($database)) $this->database = $database; $this->connection = new mysqli($this->host,$this->user,$this->pass,$this->database); return $this->connection; } public function fetchRowNum($sql) { if (!empty($sql)) { $this->sql = $sql; return $this->connection->query($sql)->num_rows; } else { throw new Exception("Error fetching row"); } } }
mysqli_query () не всегда возвращает объект mysqli_result , он также может возвращать TRUE
и FALSE
что приведет к ошибке, которую вы получаете.
Сохраните возвращаемое значение query()
и проверьте, является ли оно TRUE
или FALSE
прежде чем пытаться получить к нему доступ в качестве объекта и получить свойство num_rows
.
Из руководства по mysqli::query()
:
Возвращает FALSE при ошибке. Для успешных запросов SELECT , SHOW , DESCRIBE или EXPLAIN
mysqli_query()
вернет объектmysqli_result
. Для других успешных запросовmysqli_query()
вернет TRUE .