怎么调试这个?在非对象上调用成员函数result()

时间:2015-08-20 13:30:08

标签: php codeigniter

请使用 CODEIGNITER 帮助.. 我想使用echo打印我的userlevel和电子邮件的值..知道我是否从数据库中获取正确的数据..然后突然这个错误一直困扰着我。 CODEIGNITER的初学者需要一些帮助..非常感谢!

在我的控制器中:

if ($this->is_validated($rules))
{
        $where  = array('email' => $this->input->post('txt_email'));
        $data['query'] = $this->database_model->select_userlevel('userlevel', $where);
        $user = $data['query'];
        foreach($user->result() as $row)
        {
           echo $row->email;
           echo $row->userlevel;
        }
}

在我的模型中:

public function select_userlevel($table, $where) 
{
    $this->db->where($where);
    $query =  $this->db->get($table);
    if ($query->num_rows() > 0) 
    {
        return true;
    }
    else
    {
        echo 'no value';
        return false;
    }
}

2 个答案:

答案 0 :(得分:2)

而不是return true,您需要在模型中返回查询

<强>模型

public function select_userlevel($table, $where) 
{
    $this->db->where($where);
    $query =  $this->db->get($table);
if ($query->num_rows() > 0) 
{
    return  $query;// return query here
}
else
{

    return false;
}

<强>控制器

$user = $this->database_model->select_userlevel('userlevel', $where);
     foreach($user->result() as $row)
        {
       // your code here
      }

更新以获得更好的解决方案并正确使用MVC。

而不是返回查询,您需要从模型中返回数据

<强> MODEL

public function select_userlevel($table, $where)
{
$this->db->where($where);
$query = $this->db->get($table);
if ($query->num_rows() > 0)
{
return $query->result(); // return your result
}
else
{

return false;
}
}

<强> CONTROLLER

$user = $this->database_model->select_userlevel('userlevel', $where);
foreach ($user as $row) {
    // your code here
}

答案 1 :(得分:0)

$user不是有效的记录对象,因此它没有对结果方法的引用。

所有这些逻辑都属于模型,而不属于控制器。

控制器

public function doSomething()
{
   if( !$this->is_validated($rules) ) 
       return;

   $email = $this->input->post('txt_email');

   $users = $this->database_model->select_userlevel($email);

   // for debugging
   var_dump( $users )
   die();
}

模型

public function select_userlevel($email)
{
    $query = $this->db->select()
                      ->where('email', $email)
                      ->get('userlevel');

    return ( $query->num_rows() > 0) ? $query->result() : false;
}