试图获取非对象php变量的属性

时间:2017-02-02 03:52:48

标签: php codeigniter

我正在使用codeigniter,我已经创建了一个函数来返回用户名。这是代码:

$this->db->where('u_id', $id);
$query = $this->db->get('users');
$data = $query->result_array();

$string = $data->u_name.' '.$data->u_surname;

return $string;

当我使用此功能时,我收到此错误:

  

消息:尝试获取非对象的属性并调用该行   $ string = [...]

4 个答案:

答案 0 :(得分:0)

使用foreach循环:

{{1}}

答案 1 :(得分:0)

您可以尝试这样做。在codeigniter中,row()根据您在对象形式中的条件返回匹配的第一行。

$this->db->where('u_id', $id);
$query = $this->db->get('users');
$data = $query->row();//change here

$string = $data->u_name.' '.$data->u_surname;

//echo $string;
return $string;

了解更多信息,请参阅Codeigniter Result Sets

答案 2 :(得分:0)

尝试使用此代码返回

$this->db->select('*');
$this->db->from('users');
$this->db->where(array('u_id'=>$id));
$query=$this->db->get();
if($query->num_rows()()>0)
{
$data = $query->result();
return $data->u_name.' '.$data->u_surname;

}

答案 3 :(得分:0)

这是因为您选择为您查询生成结果的功能。

$data = $query->result_array();

result_array()返回数组中的结果,即使您只有一个结果,因此当您尝试使用$ data-> u_name时,您会遇到此错误,因为该数组没有该属性。

您可以对$ data执行foreach并执行逻辑或使用其他方法从查询中获取结果,例如$ query-> row_array();

查看codeigniter文档:Generating Query Results