如何修复错误:试图获取非对象的属性?

时间:2011-10-17 18:43:11

标签: php codeigniter

我希望在点击$_POST['name']之后得到它,并在其中插入名称,在其他表中获取插入行ID,但得到以下错误。错误的原因是什么?怎么解决?

$name = $this -> input -> post('name');
$query_re = $this->db->get_where('tour_foreign', array('name' => $name))->row();

$data2 = array();
foreach ($residence_name as $idx => $name) {
    $data2[] = array(
        'relation' => $query_re->id, //This is line number 58
        'hotel_id' => $residence_id[$idx],
        'name' => $residence_name[$idx],
    );
};
$data222 = $this->db->insert_batch('residence', $data2);

错误:

  

遇到PHP错误
严重性:通知
消息:尝试   获取非对象的属性
文件名:foreign.php
行   编号:58

4 个答案:

答案 0 :(得分:1)

这个数据库调用似乎返回零行:

$query_re = $this->db->get_where('tour_foreign', array('name' => $name))->row();

在调用row()之前,还要考虑使用num_rows()来检查数据库调用的结果。

答案 1 :(得分:0)

PHP不允许您将函数的返回值视为对象,除非它返回引用。尝试

$where = $this->db->get_where(...);
$query_re = $where->row();

编辑:

没关系,我错过了'第58行'评论,我猜PHP5允许链接。花式

答案 2 :(得分:0)

基本上代码试图告诉你的是,你正在尝试获取一个不是对象(类的实例)变量的属性。

所以就像第58号一样,它说$ query_re不是一个对象,因此不能拥有属性'id'。

答案 3 :(得分:0)

$query_re = $this->db->get_where('tour_foreign', array('name' => $name))->row();
if(is_object($query_re))  {
    ....
}