Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 20.07.2015
Сообщений: 4

Fatal error: Call to a member function query() on a non-object in db.php on line 23

20.07.2015, 17:24. Показов 1823. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все привет. Я только учусь делать сайты с помщью ООП и паттерна mvc.
Вот мой файл db.php, браузер ругается на 23 строку.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
require_once "config.php";
 
class Db extends Config {
    private $connection;
 
    function __construct() {
        $this->open_connection();
        echo "OK";
    }
 
    private function open_connection() {
        $this->connection = $mysqli = new mysqli($this->DB_HOST, $this->DB_USER, $this->DB_PASS, $this->DB_NAME);
        $this->connection->query("SET NAMES 'utf8'");
            if ($mysqli->connect_error) {
            die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
 
}
    }
 
 
    public function sql($query) {
    $result = $mysqli->query($query, $this->connection);
    if(!$result) {
        die("Database query failed:" .$mysqli->connect_error);
    }
    return $result;
}
}
$db = new db();
 
?>
Я создал модель:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 require_once "../config/db.php"; 
 
 class Mmenu extends Db {
    public function return_menu(){
        $sql = "SELECT id, menu_name FROM pages";
        $res = $this->sql($sql);
        return $res;
    }
 }
 
?>
Вот мой контроллер:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
require_once "../models/mmenu.php";
 
class Cmenu extends Mmenu {
    function print_menu() {
        $res = $this->return_menu();
        while($row = mysqli_fetch_array($res)) {
            $mname[$row['id']] = $row['menu_name'];
        }
        return $mname;
    }
 
}
 
$var = new Cmenu() ;
$var2 = array();
$var2 = $var->print_menu();
print_r($var2);
 
 
?>
До вида еще не дошел, но захотел протестировать,работает или нет. Если в браузере обращаюсь к контроллеру, то выдается данная ошибка. Я гуглил, пишут либо нет такого метода или объекта, объясните - это же вроде бы функция в самом PHP, зачем для query создавать отдельный класс или метод? Или я что-то не понимаю?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2015, 17:24
Ответы с готовыми решениями:

Fatal error: Call to a member function on a non-object in C:inetlocalhostwww estpearuser.php on line 57
Поймал такой глюк. Fatal error: Call to a member function on a non-object in C:inetlocalhostwww estpearuser.php on line 57 Обращение...

Fatal error: Call to a member function query() on a non-object in
страница выдает вот такую ошибку Fatal error: Call to a member function query() on a non-object in...

Fatal error: Call to a member function query() on a non-object
class users extends modules public function AddUser($login, $password, $ban) { return $this-&gt;mysqli-&gt;query(&quot;INSERT INTO...

6
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
20.07.2015, 17:46
r3dmist, потому что переменной $mysqli нет.
0
0 / 0 / 0
Регистрация: 20.07.2015
Сообщений: 4
20.07.2015, 17:58  [ТС]
Jewbacabra, создал, но ошибка не исчезла.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
20.07.2015, 21:47
Цитата Сообщение от r3dmist Посмотреть сообщение
создал, но ошибка не исчезла.
что изменилось?
0
0 / 0 / 0
Регистрация: 20.07.2015
Сообщений: 4
21.07.2015, 00:01  [ТС]
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
require_once "config.php";
 
class Db extends Config {
    private $connection;
    public $mysqli;
 
 
 
 
 
    private function open_connection() {
        $this->mysqli = new mysqli($this->DB_HOST, $this->DB_USER, $this->DB_PASS, $this->DB_NAME);
        $this->connection = $this->mysqli
        $this->connection->query("SET NAMES 'utf8'");
            if ($mysqli->connect_error) {
            die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
 
 
 
?>
Написал так, но думаю что коряво.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
21.07.2015, 00:23
r3dmist, во-первых включи отображение всех ошибок.
Цитата Сообщение от r3dmist Посмотреть сообщение
$this->connection = $this->mysqli
точки с запятой нет
Цитата Сообщение от r3dmist Посмотреть сообщение
$mysqli->connect_error
$mysqli не то же самое что $this->mysqli

А в целом видны ошибки проектирования.
Почему класс Db (судя по названию отвечающий за взаимодействие с бд) наследуется от config? База данных же не является конфигурацией. Меню почему наследуется от Db?
0
0 / 0 / 0
Регистрация: 20.07.2015
Сообщений: 4
21.07.2015, 11:49  [ТС]
Jewbacabra, спасибо за совет.
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Меню почему наследуется от Db?
у меня меню будет выводиться из базы данных, Mmenu - это модель,которая взаимодействует с базой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2015, 11:49
Помогаю со студенческими работами здесь

выводит ошибку Fatal error: Call to a member function fetch_assoc() on a non-object in Z:\home\veterinar.com\www\obzor.php on line 5
&lt;?php require_once('header.php'); function printResultSet($result_set) { echo &quot;Количество...

Fatal error: Call to undefined function: query() in C:inetlocalhostwww estpearclasses.php on line 6
Блин, короче кидаю я в директорию где лежит мой скрипт(classes.php) следующее: DB.php PEAR.php System.php Папку DB ну и всю...

Fatal error: Call to a member function close() on a non-object in ....index.php on line 237
нужна помощь вставляю код пхп приведенный ниже в шаблон DLE все супер работает но выдает такую ошибку: Fatal error: Call to a member...

Объясните что он хочет- PHP Fatal error: Call to a member function get() on a non-object
Добрый день помогите, устанавливаю модуль multimerch_7.7.4 для opencart, сайт падает, но админка работает и лог ошибки: PHP Fatal...

Fatal error: Call to a member function close() on null in D:\OSPanel\domains\localhost\check.php on line 31
Помогите пожалуйста нужно срочно!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru