【问题标题】:Error : get property of non-object [duplicate]错误:获取非对象的属性[重复]
【发布时间】:2012-12-20 02:28:10
【问题描述】:

可能重复:
Call to a member function on a non-object

我收到此错误:尝试获取非对象的属性 [来自模型] 当我尝试通过输入一个字符串从数据库中检索 id 时,在这种情况下是 'something'

这是我的模特

   function getRoleId($role_name='')
         {

            $conditions = array('role_name'=> $role_name);
            $this->db->where($conditions);
            $this->db->select('id');
            $query = $this->db->get('roles');       
            $row   = $query->row();
            return $row->id;
         }

控制器(这里的 $radioRole 是 = 某物),但当它到达模型时,它变成了其他东西。

$radioRole  = 'something';
$insertData['role_id']            = $this->user_model->getRoleId($radioRole);

更新

print_r($radioRole);
$insertData['role_id']            = $this->user_model->getRoleId($radioRole);

显示 $radioRole 在本例中为“某物”

但是当它到达 user_model 并且当我执行 print_r 时,它会显示其他内容,“buyer”,它甚至不会显示控制器上完成的 print_r。感觉它被覆盖了:O但我不知道:O

print_r($query)

  CI_DB_mysql_result Object ( [conn_id] => Resource id #37 [result_id] => Resource id #64 [result_array] => Array ( ) [result_object] => Array ( ) [current_row] => 0 [num_rows] => 0 [row_data] => )

【问题讨论】:

  • 您应该重写您的问题,以便更具体地了解您问的是什么。还显示您在运行代码时收到的确切错误消息。
  • 您将不得不显示更多代码。
  • 您确定您的查询正确吗?你确定数据库有结果吗?
  • 在你的$query= 行之后做一个print_r($query->row());die();,看看你是否得到任何结果。
  • 问题是您的查询要么返回 0 个结果,要么返回大量结果(不止一个)。如果是后者,您将需要一个 foreach 循环来访问结果对象。 foreach ($query->result() as $row) { echo $row->id; }

标签: php codeigniter


【解决方案1】:

你的where 错了:

$conditions = array('role_name'=> $role_name);
$this->db->where($conditions);

应该是

$conditions = array('role_name', $role_name);
$this->db->where($conditions);

编辑:

如 cmets 中所述,如果条件直接在 where 内,则逗号是必需的:

$this->db->where('role_name',$role_name);

【讨论】:

  • 他的where 非常好...您的条件是一个包含两个项目的平面数组,其中没有一个有键。他是一组键 => 值。
  • @Jeemusu,我已经将数据推送到模型函数中,但有些东西正在覆盖它。 :(有什么想法吗?MVC的触发器?如果有这样的事情?...
  • @RainbowHat,我猜这不是您自己建立的网站?无论如何,我想不出它可能会在调用函数和模型之间被覆盖。如果你直接写参数会发生什么? IE。 $insertData['role_id'] = $this->user_model->getRoleId('something');
  • @Jeemusu,我发现了问题-.-,我在同一页面上的其他功能正在覆盖它,我不知道为什么。我只使用该函数来调用“检查” $this->form_validation->set_rules('email','required|trim|valid_email|xss_clean|callback__check_email');
  • 我使用另一个函数修复了它。知道为什么会发生冲突吗?
猜你喜欢
  • 2013-01-21
  • 1970-01-01
  • 2020-03-02
  • 2012-10-22
  • 2016-07-16
  • 2014-10-30
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
相关资源
最近更新 更多