Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/54: Рейтинг темы: голосов - 54, средняя оценка - 4.93
2 / 2 / 3
Регистрация: 28.01.2014
Сообщений: 76

Ошибка Notice: Trying to get property of non-object

13.10.2014, 09:30. Показов 11127. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчанеДо сих пор писал на процедурном но теперь решил перейти на ООП
И так есть простенький класс modul у которого есть публичный метод info($detail)..этот метод должен вернуть значение столбца в базе данных..Вот собственно скрипт

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
require_once "../config.php";//Подключаем конфигурационный файл
 
class modul {
 
public function info($detail) {//Метод будет доступен отовсюду
 
$mysqli = connect();//Соединяемся с базой
 
$detail = trim(htmlspecialchars($detail));//Фильтруем входящие данные
$detail = $mysqli->real_escape_string($detail);//Экранируем спецсимволы
 
$query = $mysqli->query("SELECT `".$detail."` FROM `modules`");//Делаем запрос
return $query->num_rows;//Возвращаем количество строк в базе
 
close($mysqli);//Закрываем соединение
 
}
 
}
 
?>
Если у кого то есть подозрение что $mysqli не объект то спешу сообщить что это не так Вот что у меня в файле config.php

PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
 
function connect() {
return new mysqli("localhost", "root", "", "my-site");
}
 
function close($connect) {
$connect->close();
}
 
?>
Теперь в index.php пишу такое

PHP
1
2
3
4
5
6
<?php
 
require_once "lib/classes/modul.php";
echo $modul->info('modul_name');// Notice: Trying to get property of non-object
 
?>
Как вы догадались получаю ошибку...Немножко поиграв с запросом в файле modul.php обнаружил что если писать так

PHP
1
$query = $mysqli->query("SELECT `".$detail."` FROM `modules`");
то вернёт ошибку..а если так
PHP
1
$query = $mysqli->query("SELECT `modul_name` FROM `modules`");
то всё нормально..теперь вопрос..как поставить туда переменную?

Попробовал вот так
PHP
1
$query = $mysqli->query("SELECT \"$detail\" FROM `modules`");
но так вообще не понимаю что происходит..например если напишу так
PHP
1
echo $modul->info('modul_name');
то выводит modul_name а не значение столбца в базе

Добавлено через 12 минут
Упс..первый скриптик немножко не тот
PHP
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
require_once "../config.php";
 
class modul {
 
public function info($detail) {//Метод будет доступен отовсюду
 
$mysqli = connect();//Соединяемся с базой
 
$detail = trim(htmlspecialchars($detail));//Фильтруем входящие данные
$detail = $mysqli->real_escape_string($detail);//Экранируем спецсимволы
 
$query = $mysqli->query("SELECT ".$detail." FROM `modules`");//Делаем запрос
$num_rows = $query->num_rows;//Возвращаем количество строк в базе
 
if($num_rows == 0) echo 'Модулей пока нет';
else {
 
$row = $query->fetch_array(MYSQL_ASSOC);
return $row[$detail];
 
}
 
close($mysqli);//Закрываем соединение
 
}
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2014, 09:30
Ответы с готовыми решениями:

Ошибка Notice: Trying to get property of non-object
Помогите, пожалуйста, исправить ошибку: Notice: Trying to get property of non-object in wp-includes/post-thumbnail-template.php on...

Notice: Trying to get property of non-object in
попадаю на ошибку )хотя обьект та я вроде создаю private function input($name, $type, $label, $value = false, $default_v = false) { ...

Notice: Trying to get property of non-object in
Notice: Trying to get property of non-object in /home/admin/web/**/public_html/class/QIWI.class.php on line 13 Notice: Trying to get...

10
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.10.2014, 10:08
Hovik, экземпляр класса создать надо
PHP
1
2
3
4
5
6
7
<?php
 
require_once "lib/classes/modul.php";
$modul = new modul();
echo $modul->info('modul_name');
 
?>
0
2 / 2 / 3
Регистрация: 28.01.2014
Сообщений: 76
13.10.2014, 10:20  [ТС]
Экземпляр создан У меня в библиотеке функциий Там же есть автозагрузка классов
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
/*----------------Автозагрузка классов----------------*/
function __autoload($class_name) {
require_once 'classes/'.$class_name.'.php';
}
/*--------------------/Конец---------------------*/
 
/*-------------Создание экземпляров классов----------*/
 
$templates = new templates;
$error = new error;
$modul = new modul;//Вот :)
 
?>
Добавлено через 6 минут
Вот в общем все скрипты

index.php

PHP
1
2
3
4
require_once "lib/functions.php";
error_reporting(E_ALL);
 
echo $modul->info('modul_name');
functions.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
/*----------------Автозагрузка классов----------------*/
function __autoload($class_name) {
require_once 'classes/'.$class_name.'.php';
}
/*--------------------/Конец---------------------*/
 
/*-------------Создание экземпляров классов----------*/
 
$templates = new templates;
$error = new error;
$modul = new modul;
 
/*-------------------/Конец-------------------------*/
modul.php

PHP
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
require_once $_SERVER['DOCUMENT_ROOT']."/lib/config.php";//Подключаем конфигурационный файл
 
class modul {
 
public function info($detail) {//Метод будет доступен отовсюду
 
$mysqli = connect();//Соединяемся с базой
 
$detail = trim(htmlspecialchars($detail));//Фильтруем входящие данные
$detail = $mysqli->real_escape_string($detail);//Экранируем спецсимволы
 
$query = $mysqli->query("SELECT ".$detail." FROM `modules`");//Делаем запрос
$num_rows = $query->num_rows;//Возвращаем количество строк в базе
 
if($num_rows == 0) echo 'Модулей пока нет';
else {
 
$row = $query->fetch_array(MYSQL_ASSOC);
return $row[$detail];
 
}
 
close($mysqli);//Закрываем соединение
 
}
 
}
function.php и config.php находятся в папке lib..там же есть папка classes в котором находится modul.php..index.php естественно в корне
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.10.2014, 10:47
Hovik самое забавное, что у меня оно почти сразу заработало правда поначалу была ошибка в подключении конфига (его я вытащил в индекс -- require_once("lib/config.php"); --, так оно логичнее), так что error_reporting в индексе надо поднять выше require, возможно он выдаст ошибку.

в общем, вот так оно у меня завелось
index.php
PHP
1
2
3
4
5
6
7
<?php
error_reporting(E_ALL);
require_once("lib/config.php");
require_once("lib/functions.php");
 
echo $modul->info('modul_name');
?>
modul.php
PHP
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
<?php
class modul {
 
public function info($detail) {//Метод будет доступен отовсюду
 
$mysqli = connect();//Соединяемся с базой
 
$detail = trim(htmlspecialchars($detail));//Фильтруем входящие данные
$detail = $mysqli->real_escape_string($detail);//Экранируем спецсимволы
 
$query = $mysqli->query("SELECT ".$detail." FROM `modules`");//Делаем запрос
$num_rows = $query->num_rows;//Возвращаем количество строк в базе
 
if($num_rows == 0) echo 'Модулей пока нет';
else {
 
$row = $query->fetch_array(MYSQL_ASSOC);
return $row[$detail];
 
}
 
close($mysqli);//Закрываем соединение
 
}
 
}
?>
0
2 / 2 / 3
Регистрация: 28.01.2014
Сообщений: 76
13.10.2014, 10:57  [ТС]
О_О..у меня не работает..выдаёт

Notice: Trying to get property of non-object in H:\home\my-site\www\lib\classes\modul.php on line 13
Модулей пока нет

Хотя в базе данных я добавил запись..блин что ж такое..может денвер глючит??Щас на хостинге протестирую
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.10.2014, 11:11
Цитата Сообщение от Hovik Посмотреть сообщение
Notice: Trying to get property of non-object in H:\home\my-site\www\lib\classes\modul.php on line 13
нужно попробовать написать
PHP
1
2
3
4
5
6
7
8
$query = $mysqli->query("SELECT ".$detail." FROM `modules`");//Делаем запрос
 
if(!query)
{
    echo $mysqli->error;
}
 
$num_rows = $query->num_rows;//Возвращаем количество строк в базе
похоже, что ругается он как раз на отсутствие объекта $query
0
2 / 2 / 3
Регистрация: 28.01.2014
Сообщений: 76
13.10.2014, 11:17  [ТС]
Ошибка "Unknown column 'modul_name' in 'field list'"..это и радует и бесит Придётся с именами полей в базе шаманить

Добавлено через 2 минуты
PHP
1
2
3
4
5
6
7
8
9
if(!query)
{
    echo $mysqli->error;
}//Notice: Use of undefined constant query - assumed 'query'
 
if(!$query)
{
    echo $mysqli->error;
}//Unknown column 'modul_name' in 'field list'
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.10.2014, 11:19
Hovik, вообще говоря -- странный способ вытаскивать значение поля... а если записей несколько и нужна одна конкретная? тогда придется еще параметр отдавать в метод, чтобы в WHERE подставить

Добавлено через 44 секунды
ну да, опечатался с долларом
1
2 / 2 / 3
Регистрация: 28.01.2014
Сообщений: 76
13.10.2014, 11:21  [ТС]
Я ещё учусь и практикуюсь Без практики не куда А вообще спасибо Изменил имена столбцов в базе и всё пошло как по маслу
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.10.2014, 11:23
Hovik, да не за что
0
2 / 2 / 3
Регистрация: 28.01.2014
Сообщений: 76
13.10.2014, 11:25  [ТС]
Мне ещё учиться и учится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2014, 11:25
Помогаю со студенческими работами здесь

Notice: Trying to get property of non-object при создании и выводе новосозданной страницы в базе
Здравствуйте. Отдали &quot;недоделанный сайт&quot;. Страницы, которые были созданы раньше открываются и работают корректно. При создании новых...

Ошибка Object doesn't support this property or method
При отправлении формы иногда(!) возникает ошибка 'Object doesn't support this property or method'. После перезапуска IIS всё опять...

Ошибка Object doesn't support this property or method
Здравствуйте! Сия ошибка возникает в связи вот с чем... прошу не обижать понимаю, что коряво я написал- нужда :-( Существуют две...

Ошибка в VBA object doesn't support this property or method
Всем добрый день подскажите в чем ошибка object doesn't support this property or method error 438 вот скрин подскажите что не...

Ошибка: An object reference is required for the nonstatic field, method or property
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication5 { class Butterfly {...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru