我在这个函数中使用了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;
}
}
答案 0 :(得分:0)
您不能像使用过的那样使用多个where
和or_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);