2011-08-22 178 views
1

我打电话从两个不同的函数两次的功能,但它说的功能之一“试图让非对象的属性” 第一个功能是试图让非对象的属性笨

$sql=$this->db->query("select * from gl_events where entry_id='$entry_id'"); 
if($sql->num_rows() > 0) 
{ 
    $row3=$sql->row(); 
    $event_respond[] = 
     array(
      'entry_id'=>$row3->entry_id, 
      'event_title'=>$row3->event_title, 
      'location'=>$row3->event_loc_add_ln1, 
      'location1'=>$row3->event_loc_add_ln2, 
      'start'=>$row3->event_start_date, 
      'start1'=>$row3->event_start_time, 
      'created'=>$row3->user_id, 
      'about'=>$row3->event_descr, 
      'end'=>$row3->event_end_time, 
      'end1' => $row3->event_end_time, 
      'userid'=>$row3->user_id, 
      //here the function goes to gl_get_att function and 
      //calls gl_getusername function, 
      'attend'=>$this->gl_get_att($row3->entry_id), 
      // here it calls gl_getusername function directly 
      'username'=>$this->gl_getusername($row3->user_id) 
     ); 
} 

gl_get_att定义:

public function gl_get_att($entry_id) 
{ 
    $query=$this->db->query("select * from gl_event_participants where event_id='$entry_id'"); 
    //echo "select * from gl_event_participants where event_id='$entry_id'"; 
    $row1=$query->row(); 
    foreach($query->result() as $row) 
    { 
     $data[]= array(
      'user_id'=>$row->user_id, 
      'username'=>$this->gl_getusername($row->user_id)// here it calls get username function 
     ); 
    } 
    //print_r($data[1]); 
    //print_r($data[0]); 
    return $data; 
} 

gl_getusername定义:

public function gl_getusername($user_id) 
{ 
    $query=$this->db->query("select user_name from gl_user where user_id = '$user_id'"); 
    $row1=$query->row(); 
    //print_r($row1->user_name); 
    return $row1->user_name; //This is line 396 
} 

现在对于gl_get_att其返回正确的值,但第一个函数在那里我可以把它叫做直接它不工作

error message: A PHP Error was encountered 
Severity: Notice 
Message: Trying to get property of non-object 
Filename: events/gl_event_model.php 
Line Number: 396 

线396上面标明

这是后上周六工作正常周末它不工作!奇怪

+0

添加'var_dump($ user_id);'作为'gl_getusername'函数的第一行。很可能你第二次调用'gl_getusername'时,你传递null或一些无效的数据。 – J0HN

回答

3

您不检查以查看$query是否有效,或者$ query-> row()返回一个对象。如果在数据库中未找到传入的$entity_id,则会生成此错误。

+0

我已经检查$查询其工作正常gl_get_att 我想要做的是我得到的用户名列表gl_get_att,我得到它的正确输出。但它在第一个功能中不起作用。当我print_r($ row1-> user_name);它为gl_get_att()打印,但对于上面的函数,在同一行上有一个错误,说试图获取非对象的属性 – gklaxman

+0

对不起,问题已解决!!!! 谢谢@Dough Kress !!!查询获取没有结果dat是原因 – gklaxman