or_where子句无法在codeigniter

时间:2016-02-15 10:45:28

标签: codeigniter

我在这个函数中使用了where和or_where子句。但是or_where子句不起作用。而不是我需要在这里更改。如果我隐藏or_where条件它的工作。

public function logincheck()
{
$this->load->database();
$mobile=$this->input->post('mobile');//rollno or mobile

 $status='1';
$user_type='student';
$password=$this->input->post('password');

$this->db->select('*')->from('student_creation')
->join('login','student_creation.student_id=login.login_id')
->where('login.user_type',$user_type)
->where('login.password',$password)
->where('student_creation.alternativemobile',$mobile)
->or_where('student_creation.rollno',$mobile);
 //$this->db->or_where('student_creation.alternativemobile',$mobile);

$query = $this->db->get();
//$rowcount = $query->num_rows();  
if($query->num_rows()==1)
{
$row=$query->row();

$data=array(
        'rollno'=>$row->rollno,
        'student_id'=>$row->student_id,
        'alternativemobile'=>$row->alternativemobile,
        'login_id'=>$row->login_id,
        'password'=>$row->password,
        'user_type'=>'student',
        'loginchecks'=>true
);


$this->session->set_userdata($data);
return true;
}
else
{
return false;
}
}   

2 个答案:

答案 0 :(得分:0)

您不能像使用过的那样使用多个whereor_where

如果CI版本为3或更高版本,则可以使用query-grouping功能来实现此目的。点击此链接https://codeigniter.com/user_guide/database/query_builder.html#query-grouping

答案 1 :(得分:0)

您可以使用

$this->db->select('*')->from('student_creation')
->join('login','student_creation.student_id=login.login_id')
->where('login.user_type',$user_type)
->where('login.password',$password)
->where("(student_creation.alternativemobile = ".(int)$mobile." OR student_creation.rollno = '$mobile' )", null, false);