Ошибка trying to get property of non object in

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.'s user avatar

Nikola K.

7,06313 gold badges30 silver badges39 bronze badges

asked May 5, 2011 at 2:06

Gereltod's user avatar

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 strike's user avatar

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.

Community's user avatar

answered May 5, 2011 at 2:13

alex's user avatar

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

Jamie's user avatar

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's user avatar

Brane

3,1872 gold badges40 silver badges53 bronze badges

answered May 5, 2011 at 2:09

james's user avatar

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());
    }
}

 
  1. Главная
  2. Блоги
  3. Блог _Maxim_

Главные вкладки

  • Просмотр(активная вкладка)
  • Реакции

Аватар пользователя _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
Studio VIZA


14 августа 2016 в 18:00




Аватар пользователя Studio VIZA
Studio VIZA


14 августа 2016 в 18:02




Я нашел хак, чтобы решить эту проблему (я уверен, что есть более удобный способ, если кто-то потрудился проследить через файл block.module и найти корень проблемы). Мое решение:

1. Перейдите в файл block.module и найти линии 245 , которая должна быть внутри функции , вызываемой 2. Добавьте строку «print_r ($ дельта». «);» к этой функции , так что становится
function block_block_view($delta = »)

В вашем случае это строка 912

Аватар пользователя _Maxim_
_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
Studio VIZA


14 августа 2016 в 19:31




block_block_view($delta
Ищите по файлу Ctrl+f
Если ничего не найдено, внимательно посмотрите стр https://www.drupal.org/node/1128936

Там несколько вариантов решений должно быть. я ваши файлы не вижу полностью, поэтому мне лениво вникать. Суббота всёж

Аватар пользователя Mihail.space
Mihail.space


14 августа 2016 в 19:35




Notice говорит о том, что ошибка выше указанной в нём строчки. В этом вся паскудность предупреждений, так как ошибка выше может быть и перед ней, и выше, и дебажить этот трип то еще развлечение..
print_r выполняет почти тоже самое, что и var_dump, только более читабельно, но менее полно, то есть распечатывает в поток сведения о переменной, из чего она состоит, что бывает удобно, если нужно вывести вложенную переменную по ключу.
Сам Notice просто предупреждает о том, что что- то неоппределено или где то пусто и т.д., но работу скрипта не останавливает.

Аватар пользователя gun_dose
gun_dose


14 августа 2016 в 20:19




Поставьте devel. Он при ошибке весь стек вызова выводит. И вместо принт эра и вар дампа там есть dpm

Аватар пользователя _Maxim_
_Maxim_


19 августа 2016 в 12:53




Большое спасибо всем, кто отозвался и пришел на помощь!

Видимо, мой случай отличается от приведенного на этой странице https://www.drupal.org/node/1128936 . Я пробовал то, что там предлагается, но ни один способ не решил мою проблему.

После детального изучения кода block.module (приведен вверху), я пришел к выводу, что проблема связана с кэшированием блоков. Очистка кэша ничего не дала. А вот после отключения кэширования блоков ошибка исчезла. Что именно работает неправильно я пока не понял…

Временное решение — отключить кэширование блоков. Протестировав сайт, я увидел, что это не отразилось на скорости работы.

Но все-таки я хочу понять в чем проблема. В свободное время планирую еще детальнее изучить кэширование Drupal (Что откуда берется, как формируется, куда записывается…). Если найду решение — напишу. Может быть кому пригодится.

Если вам не трудно, дайте, пожалуйста, ссылки на подходящую информацию о кэшировании блоков. Чтобы меньше «воды», а просто и по существу.

Понравилась статья? Поделить с друзьями:
  • Ошибка tpms nissan teana что это
  • Ошибка u000970 opel astra h
  • Ошибка tpms nissan teana l33 как снять
  • Ошибка u0009 санта фе классик
  • Ошибка u0001 форд фокус 2 дорестайлинг