Вы используете объект, содержащий ссылку нулевого значения. Таким образом, он дает пустое исключение. В примере строковое значение равно null, и при проверке его длины произошло исключение.
Пример:
string value = null;
if (value.Length == 0) // <-- Causes exception
{
Console.WriteLine(value); // <-- Never reached
}
Ошибка исключения:
Необработанное исключение:
System.NullReferenceException: ссылка на объект не установлена в экземпляр объекта. в Program.Main ()
blockquote>
Это потому, что в вашем запросе была ошибка. MySQli->query()
вернет false при ошибке. Измените его на что-то вроде ::
$result = $this->database->query($query);
if (!$result) {
throw new Exception("Database Error [{$this->database->errno}] {$this->database->error}");
}
Это должно вызвать исключение, если есть ошибка ...
Скорее всего, ваш запрос не удался, а запрос вызвал логический FALSE (или какой-то объект ошибки), который затем попытался использовать, как если бы был объект resultet, что вызвало ошибку. Попробуйте что-то вроде var_dump($result)
, чтобы узнать, что вы действительно получили.
Проверьте ошибки после каждого запроса запроса к базе данных. Даже если сам запрос синтаксически действителен, в любом случае есть слишком много причин для его отказа - проверка ошибок каждый раз в какой-то момент сэкономит вам много горя.
Убедитесь, что вы уже закрыли соединение с базой данных или нет. В моем случае я получал ошибку, потому что соединение было близко в верхней строке.
Мне не хватает пробелов в моем запросе, и эта ошибка возникает.
Ex: $sql= "SELECT * FROM";
$sql .= "table1";
Хотя пример может выглядеть просто, при кодировании сложных запросов вероятность этой ошибки высока. Мне не хватало пробела перед словом «table1».