Задать вопрос
@ORCUS99

Как исправить такую ошибку в php коде?

Приветствую всех. Вот уже 3 день бьюсь с ошибкой в php коде.

Дело в том что я подключаю mysql таблицу и указываю ей лимит, до того как я указал лимит, все работает, после весь код рушится.

Вот ошибка (Fatal error: Call to a member function fetch_assoc() on a non-object in C:\OpenServer\domains\cms\engine\classes\db.class.php on line 36)

$news = $mysqli -> query('SELECT id, title, description, img_url
FROM news
ORDER BY id DESC
LIMIT {$to}, {$limit}
');
... (пропуск некоторого количества кода)
while ($rows = $mysqli -> assoc($news));

Так вот, ошибка в том что assoc() это функция в файле db.class.php
public function assoc($result) {
return $result -> fetch_assoc();
}
И после того как я прописываю лимит, функция то ли не правильно работает, то ли ломается, в общем не могу уже. Выдает ошибку.

Дополнительную информацию дам в комментах.
За ранее спасибо.

Вот собственно те переменные которые участвуют в коде:

define('QUANTITY', 1);
$limit = QUANTITY_NEWS;

$page = 1;
$to = $page * $limit - $limit;
  • Вопрос задан
  • 184 просмотра
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
glebovgin
@glebovgin
Full Stack Web Developer
Вечер добрый.
У вас запрос написан в одинарных кавычках. Замените его хотя бы на
$news = $mysqli -> query("SELECT id, title, description, img_url 
FROM news 
ORDER BY id DESC 
LIMIT $to, $limit");

Либо на
$news = $mysqli -> query('SELECT id, title, description, img_url 
FROM news 
ORDER BY id DESC 
LIMIT '. $to. ', '. $limit);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ivanq
@Ivanq
Знаю php, js, html, css
1. Fatal error: Call to a member function fetch_assoc() on a non-object in C:\OpenServer\domains\cms\engine\classes\db.class.php on line 36
Дословно: родитель fetch_assoc ($result) - не объект
2. $result->fetch_assoc вызывается в assoc($result)
3. В данном случае параметр assoc - $news. Значит, $news - не объект (false, скорее всего)
Ошибка в запросе.
Опубликуйте сам запрос и $mysqli->error

UPD Замените одинарные кавычки на двойные. Пременные интерпретируются только в двойных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы