on Control page:
<?php
include 'pages/db.php';
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
$sidemenus = mysql_fetch_object($results);
?>
on View Page:
<?php foreach ($sidemenus as $sidemenu): ?>
<?php echo $sidemenu->mname."<br />";?>
<?php endforeach; ?>
Error is:
Notice: Trying to get property of non-object in C:wampwwwphonepagesinit.php on line 22
Can you fix it? I don’t have any idea what happened.
Nikola K.
7,06313 gold badges30 silver badges39 bronze badges
asked May 5, 2011 at 2:06
4
Check the manual for mysql_fetch_object()
. It returns an object, not an array of objects.
I’m guessing you want something like this
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) {
$sidemenus[] = $sidemenu;
}
Might I suggest you have a look at PDO. PDOStatement::fetchAll(PDO::FETCH_OBJ)
does what you assumed mysql_fetch_object()
to do
answered May 5, 2011 at 2:13
Phil is on strikePhil is on strike
156k23 gold badges240 silver badges243 bronze badges
0
Your error
Notice: Trying to get property of non-object in C:wampwwwphonepagesinit.php on line 22
Your comment
@22 is
<?php echo $sidemenu->mname."<br />";?>
$sidemenu
is not an object, and you are trying to access one of its properties.
That is the reason for your error.
answered May 5, 2011 at 2:13
alexalex
477k200 gold badges877 silver badges980 bronze badges
<?php foreach ($sidemenus->mname as $sidemenu): ?>
<?php echo $sidemenu ."<br />";?>
or
$sidemenus = mysql_fetch_array($results);
then
<?php echo $sidemenu['mname']."<br />";?>
answered May 5, 2011 at 2:14
JamieJamie
1,35111 silver badges19 bronze badges
$sidemenu
is not an object
, so you can’t call methods on it. It is probably not being sent to your view
, or $sidemenus
is empty.
Brane
3,1872 gold badges40 silver badges53 bronze badges
answered May 5, 2011 at 2:09
jamesjames
3,5238 gold badges31 silver badges39 bronze badges
2
Друзья, никак не могу понять почему на странице вылазит «PHP notice Trying to get property of non-object» После переноса, Базы перенес, файлы перенес. не могу понять в чем проблема.
В браузере выходит.
PHP notice
Trying to get property of non-object
/home/dari_kz/data/www/dari.kz/protected/models/Pages.php(323)
311 return $news;
312 }
313
314 public function addView($pageId) {
315 self::model()->updateCounters(array(‘views’ => 1), ‘id=?’, array($pageId));
316 }
317
318
319 public function getOnePageInCategory($sefname) {
320 $criteria = new CDbCriteria;
321 $category = Categories::model()->getCategoryBySefName($sefname);
322
323 $criteria->compare(‘category_id’, $category->id);
324 $criteria->compare(‘active’, ‘1’);
325 $criteria->compare(‘lang_id’, Controller::getLangId());
326 $criteria->limit = 1;
327 $criteria->order = ‘position ASC’;
328 $page = Pages::model()->find($criteria);
329
330 return $page;
331 }
332
333
334 public static function getSearchPages(CDbCriteria $criteria, CPagination $pagination, $searchString) {
335 //$pagination->pageSize = 10;
Stack Trace
#0
– /home/dari_kz/data/www/dari.kz/protected/controllers/MainpageController.php(21): Pages->getOnePageInCategory(«mainpage»)
16
17 public function actionIndex() {
18
19 $this->layout = »;
20 $this->isMainpage = true;
21 $mainpage = Pages::model()->getOnePageInCategory(‘mainpage’);
22
23 $this->render(‘index’, array(‘mainpage’ => $mainpage));
24 }
25
26 public function actionError() {
#1
+ /home/dari_kz/data/www/dari.kz/framework/web/actions/CInlineAction.php(50): MainpageController->actionIndex()
#2
+ /home/dari_kz/data/www/dari.kz/framework/web/CController.php(309): CInlineAction->runWithParams(array())
#3
+ /home/dari_kz/data/www/dari.kz/framework/web/CController.php(287): CController->runAction(CInlineAction)
#4
+ /home/dari_kz/data/www/dari.kz/framework/web/CController.php(266): CController->runActionWithFilters(CInlineAction, array())
#5
+ /home/dari_kz/data/www/dari.kz/framework/web/CWebApplication.php(283): CController->run(«»)
#6
+ /home/dari_kz/data/www/dari.kz/framework/web/CWebApplication.php(142): CWebApplication->runController(«»)
#7
+ /home/dari_kz/data/www/dari.kz/framework/base/CApplication.php(162): CWebApplication->processRequest()
#8
– /home/dari_kz/data/www/dari.kz/index.php(13): CApplication->run()
08 defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);
09 // specify how many levels of call stack should be shown in each log message
10 defined(‘YII_TRACE_LEVEL’) or define(‘YII_TRACE_LEVEL’,3);
11
12 require_once($yii);
13 Yii::createWebApplication($config)->run();
14
2015-04-02 02:33:14 Apache/2.2.22 (Ubuntu) Yii Framework/1.1.12
Если обновить движок, то выходит ошибка:
Ошибка 500
Trying to get property of non-object
opencart 2.0.3.1.
VPS при нагрузке на процессор свыше 100% на севере, ползут ошибки в журнале, множество. Далее слетает ЧПУ с товаров.
Как можно решить проблему?
2022-07-18 12:50:55 — PHP Notice: Trying to get property of non-object in /var/www/www-root/data/www/сайт.ру/vqmod/vqcache/vq2-system_modification_catalog_controller_common_seo_pro.php on line 618
2022-07-18 12:50:55 — PHP Notice: Error: MySQL server has gone away
Error No: 2006
SELECT category_id FROM oc_product_to_category WHERE product_id = ‘63815’ ORDER BY main_category DESC LIMIT 1 in /var/www/www-root/data/www/сайт.ру/system/modification/system/library/db/mysqli.php on line 44
Изменено 18.07.2022 в 10:35 пользователем Алекс
Йож писал(а):модель же новую делаете в последнем примере, поэтому в category пусто..
покажите код из модели, откуда берется ->kategorii
По идее и в отделах должно быть пусто, но в фильтр подгрузились значения.
Это общий со связями на все таблицы:
Код: Выделить всё
<?php
namespace appmodulesmainmodels;
use Yii;
use appmodulesmainModule;
/**
* This is the model class for table "{{%tbl_employee}}".
*
* @property integer $id
* @property string $position_full_name
* @property string $internal_phone
* @property string $city_phone
* @property string $cabinet
* @property string $email
* @property string $note
* @property integer $pidrozdil_id
* @property integer $kat_id
* @property integer $vid_id
* @property string $lang
* @property string $publish_status
* @property string $publish_date
*
* @property TblPidrozdil $pidrozdil
* @property TblKategorii $kat
* @property TblViddil $vid
*/
class Employee extends yiidbActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return '{{%tbl_employee}}';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['position_full_name', 'internal_phone', 'city_phone', 'cabinet', 'email', 'note'], 'required'],
[['pidrozdil_id', 'kat_id', 'vid_id'], 'integer'],
[['lang', 'publish_status'], 'string'],
[['publish_date'], 'safe'],
[['position_full_name'], 'string', 'max' => 160],
[['internal_phone', 'city_phone'], 'string', 'max' => 48],
[['cabinet'], 'string', 'max' => 64],
[['email'], 'string', 'max' => 150],
[['note'], 'string', 'max' => 32],
[['pidrozdil_id'], 'exist', 'skipOnError' => true, 'targetClass' => Pidrozdil::className(), 'targetAttribute' => ['pidrozdil_id' => 'id']],
[['kat_id'], 'exist', 'skipOnError' => true, 'targetClass' => Kategorii::className(), 'targetAttribute' => ['kat_id' => 'id']],
[['vid_id'], 'exist', 'skipOnError' => true, 'targetClass' => Viddil::className(), 'targetAttribute' => ['vid_id' => 'id']],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Module::t('module', 'ID'),
'position_full_name' => Module::t('module', 'POSFN'),
'internal_phone' => Module::t('module', 'INTERNAL_PHONE'),
'city_phone' => Module::t('module', 'CITY_PHONE'),
'cabinet' => Module::t('module', 'CABINET'),
'email' => Module::t('module', 'EMAIL'),
'note' => Module::t('module', 'NOTE'),
'pidrozdil_id' => Module::t('module', 'PIDROZDIL_ID'),
'kat_id' => Module::t('module', 'CATEGORY_ID'),
'vid_id' => Module::t('module', 'VID_ID'),
'lang' => Module::t('module', 'LANG'),
'publish_status' => Module::t('module', 'PUBLISH_STATUS'),
'publish_date' => Module::t('module', 'PUBLISH_DATE'),
];
}
/**
* @return yiidbActiveQuery
*/
public function getPidrozdil()
{
return $this->hasOne(Pidrozdil::className(), ['id' => 'pidrozdil_id']);
}
/**
* @return yiidbActiveQuery
*/
public function getKategorii()
{
return $this->hasOne(Kategorii::className(), ['id' => 'kat_id']);
}
/**
* @return yiidbActiveQuery
*/
public function getViddil()
{
return $this->hasOne(Viddil::className(), ['id' => 'vid_id']);
}
/**
* @inheritdoc
* @return EmployeeQuery the active query used by this AR class.
*/
public static function find()
{
return new EmployeeQuery(get_called_class());
}
}
Это чисто класс категорий:
Код: Выделить всё
<?php
namespace appmodulesmainmodels;
use Yii;
/**
* This is the model class for table "{{%tbl_kategorii}}".
*
* @property integer $id
* @property string $category
* @property string $lang
* @property string $publish_status
* @property string $publish_date
*
* @property TblEmployee[] $tblEmployees
* @property TblPidrozdil[] $tblPidrozdils
*/
class Kategorii extends yiidbActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return '{{%tbl_kategorii}}';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['category'], 'required'],
[['lang', 'publish_status'], 'string'],
[['publish_date'], 'safe'],
[['category'], 'string', 'max' => 80],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'ID'),
'category' => Yii::t('app', 'Category'),
'lang' => Yii::t('app', 'Lang'),
'publish_status' => Yii::t('app', 'Publish Status'),
'publish_date' => Yii::t('app', 'Publish Date'),
];
}
/**
* @return yiidbActiveQuery
*/
public function getEmployees()
{
return $this->hasMany(Employee::className(), ['kat_id' => 'id']);
}
/**
* @return yiidbActiveQuery
*/
public function getPidrozdils()
{
return $this->hasMany(Pidrozdil::className(), ['kat_id' => 'id']);
}
/**
* @inheritdoc
* @return KategoriiQuery the active query used by this AR class.
*/
public static function find()
{
return new KategoriiQuery(get_called_class());
}
}
- Главная
- Блоги
- Блог _Maxim_
Главные вкладки
- Просмотр(активная вкладка)
- Реакции
_Maxim_
14 августа 2016 в 17:45
Здравствуйте!
После обновления Drupal стала появляться ошибка Notice: Trying to get property of non-object в функции _block_render_blocks() (строка 912 в файле /var/www/html/modules/block/block.module).
Подскажите, пожалуйста, из-за чего она возникает?
Как исправить?
- Drupal7
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Studio VIZA
14 августа 2016 в 18:00
Studio VIZA
14 августа 2016 в 18:02
Я нашел хак, чтобы решить эту проблему (я уверен, что есть более удобный способ, если кто-то потрудился проследить через файл block.module и найти корень проблемы). Мое решение:
1. Перейдите в файл block.module и найти линии 245 , которая должна быть внутри функции , вызываемой 2. Добавьте строку «print_r ($ дельта». «);» к этой функции , так что становится
function block_block_view($delta = »)
В вашем случае это строка 912
_Maxim_
14 августа 2016 в 19:16
Извините, что-то я не пойму.
Вот код этой функции:
<?php function _block_render_blocks($region_blocks) {
$cacheable = TRUE;
// We preserve the submission of forms in blocks, by fetching from cache only
// if the request method is 'GET' (or 'HEAD').
if ($_SERVER['REQUEST_METHOD'] != 'GET' && $_SERVER['REQUEST_METHOD'] != 'HEAD') {
$cacheable = FALSE;
}
// Block caching is not usually compatible with node access modules, so by
// default it is disabled when node access modules exist. However, it can be
// allowed by using the variable 'block_cache_bypass_node_grants'.
elseif (!variable_get('block_cache_bypass_node_grants', FALSE) && count(module_implements('node_grants'))) {
$cacheable = FALSE;
}
// Proceed to loop over all blocks in order to compute their respective cache
// identifiers; this allows us to do one single cache_get_multiple() call
// instead of doing one cache_get() call per block.
$cached_blocks = array();
$cids = array();
if (
$cacheable) {
foreach ($region_blocks as $key => $block) {
if (!isset($block->content)) {
if (($cid = _block_get_cache_id($block))) {
$cids[$key] = $cid;
}
}
}
if (
$cids) {
// We cannot pass $cids in directly because cache_get_multiple() will
// modify it, and we need to use it later on in this function.
$cid_values = array_values($cids);
$cached_blocks = cache_get_multiple($cid_values, 'cache_block');
}
}
foreach (
$region_blocks as $key => $block) {
// Render the block content if it has not been created already.
if (!isset($block->content)) {
// Erase the block from the static array - we'll put it back if it has
// content.
unset($region_blocks[$key]);
$cid = empty($cids[$key]) ? NULL : $cids[$key];
// Try fetching the block from the previously loaded cache entries.
if (isset($cached_blocks[$cid])) {
$array = $cached_blocks[$cid]->data;
}
else {
$array = module_invoke($block->module, 'block_view', $block->delta);
// Valid PHP function names cannot contain hyphens.
$delta = str_replace('-', '_', $block->delta);
// Allow modules to modify the block before it is viewed, via either
// hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
drupal_alter(array('block_view', "block_view_{$block->module}_{$delta}"), $array, $block);
if (isset(
$cid)) {
cache_set($cid, $array, 'cache_block', CACHE_TEMPORARY);
}
}
if (isset(
$array) && is_array($array)) {
foreach ($array as $k => $v) {
$block->$k = $v;
}
}
if (isset($block->content) && $block->content) {
// Normalize to the drupal_render() structure.
if (is_string($block->content)) {
$block->content = array('#markup' => $block->content);
}
// Override default block title if a custom display title is present.
if ($block->title) {
// Check plain here to allow module generated titles to keep any
// markup.
$block->subject = $block->title == '<none>' ? '' : check_plain($block->title);
}
if (!isset($block->subject)) {
$block->subject = '';
}
$region_blocks["{$block->module}_{$block->delta}"] = $block;
}
}
}
return $region_blocks;
}
?>
Строка 912 :
<?php$array = $cached_blocks[$cid]->data; ?>
Куда ставить <?php print_r ($ дельта". ");?>
Studio VIZA
14 августа 2016 в 19:31
block_block_view($delta
Ищите по файлу Ctrl+f
Если ничего не найдено, внимательно посмотрите стр https://www.drupal.org/node/1128936
Там несколько вариантов решений должно быть. я ваши файлы не вижу полностью, поэтому мне лениво вникать. Суббота всёж
Mihail.space
14 августа 2016 в 19:35
Notice говорит о том, что ошибка выше указанной в нём строчки. В этом вся паскудность предупреждений, так как ошибка выше может быть и перед ней, и выше, и дебажить этот трип то еще развлечение..
print_r выполняет почти тоже самое, что и var_dump, только более читабельно, но менее полно, то есть распечатывает в поток сведения о переменной, из чего она состоит, что бывает удобно, если нужно вывести вложенную переменную по ключу.
Сам Notice просто предупреждает о том, что что- то неоппределено или где то пусто и т.д., но работу скрипта не останавливает.
gun_dose
14 августа 2016 в 20:19
Поставьте devel. Он при ошибке весь стек вызова выводит. И вместо принт эра и вар дампа там есть dpm
_Maxim_
19 августа 2016 в 12:53
Большое спасибо всем, кто отозвался и пришел на помощь!
Видимо, мой случай отличается от приведенного на этой странице https://www.drupal.org/node/1128936 . Я пробовал то, что там предлагается, но ни один способ не решил мою проблему.
После детального изучения кода block.module (приведен вверху), я пришел к выводу, что проблема связана с кэшированием блоков. Очистка кэша ничего не дала. А вот после отключения кэширования блоков ошибка исчезла. Что именно работает неправильно я пока не понял…
Временное решение — отключить кэширование блоков. Протестировав сайт, я увидел, что это не отразилось на скорости работы.
Но все-таки я хочу понять в чем проблема. В свободное время планирую еще детальнее изучить кэширование Drupal (Что откуда берется, как формируется, куда записывается…). Если найду решение — напишу. Может быть кому пригодится.
Если вам не трудно, дайте, пожалуйста, ссылки на подходящую информацию о кэшировании блоков. Чтобы меньше «воды», а просто и по существу.