Codeigniter:使用get_where

时间:2016-06-20 22:42:03

标签: php mysql arrays codeigniter

我正在使用get_where子句为我的登录获取数据库中的值,如此

控制器:

public function  submit_login(){
            if($this->input->post('submit')){
                $email= $this->input->post('email');
                $password= $this->input->post('password');
                $this->load->model('user_model');
                $result= $this->user_model->login($email, $password);

              print_r($result);
            }
        }

模型

public function login($email, $password){
        $query=$this->db->get_where('user',array('email'=>$email,'password'=>$password));
             if($query->num_rows()>0){
                return $query->result();
            }
        return false ; 
    }

返回followint数组

  

数组([0] => stdClass对象([id] => 2 [名称] => Sikander [电子邮件]   => sikander@test.com [密码] =>密码[mobile_number] => 1234 [role] =>卖家[分] => 0))

现在我尝试循环这个并将id分配给sesion但是foreach似乎不适用于此,不知道为什么请求帮助

2 个答案:

答案 0 :(得分:2)

应用程序应该在物质模型中只返回一个结果。 你在那里。如您所见,您有一个数组,其中一个元素[0]是一个对象。遵循OOP方法,您可以通过以下方式获得这些属性(值):

$result[0]->id;

或者,由于预期数据库中有一行,因此在模型中您可以返回:

return $query->row();

并通过

进行检查
$result->id

如果数组语法更方便您进行迭代,则可以使用

$query->result_array()

$query->row_array() 

方法。 docs中有很多有用的例子。

答案 1 :(得分:0)

public function login($email, $password){
    $query=$this->db->get_where('user',array('email'=>$email,'password'=>$password));
         if($query->num_rows()>0){
            return $query->result();
        }
    return false ; 
}

在你的代码中返回$ query-> result();在

中给出带有对象的数组
foreach ($users as $user) {
                  echo $user->email; // what ever your table fields          

                        }

如果您只需要单个值来形成查询,那么您需要 return $ query-> result();替换为

return $query->row(); // this return as object  or 
return $query->row_array();// this return as single array