2011-10-17 95 views
0

我想从点击$_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); 

错误:

A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: foreign.php
Line Number: 58

+1

请注明线#58 –

+0

@KorvinSzanto它写成注释 “//这是行数58” –

+0

@Korvin - 他做到了。 – CodeReaper

回答

1

看来,这个数据库调用返回零行:

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

还要考虑使用NUM_ROWS()调用行之前检查数据库调用的结果()。

0

PHP不允许你把一个函数的返回值作为目标,除非它返回一个参考。尝试

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

编辑:

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

+0

实际上,链接允许在这里 –

+0

是不是只有用php4这是一个问题? – CodeReaper

+0

呃。是的,看起来你们都是对的。感谢您教我关于php5的新知识 –

0

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

因此,像58号一样,它表示$ query_re不是一个对象,因此不能具有属性“id”。

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