In CodeIngiter User guide ,they said the following code:
$this->db->where('name', $name);
$this->db->where('title', $title);
$this->db->where('status', $status);
// WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
It means when I wanna select some thing from database by active record,I should use where method and it will do it by replace AND between fields.
now I wanna to make login page,I do this:
public function True_login($username = '',$password = '')
{
$this->db->flush_cache();
$this->db->where('username',$username);
$this->db->where('password',$password);
$count = $this->db->count_all_results('PM_ADMIN_LIST');
if ($count === 1)
{
return TRUE;
}
else
{
return FALSE;
}
}
but it will return TRUE if username=$username OR password = $password .
if one of the username or password will be found in table(and $count === 1 it will return TRUE)
where is my prbolem and how should I solve it?
$this->db->count_all_results('PM_ADMIN_LIST');
is returning the number of rows in the table and ignorning the restrictors above it.
Try:-
$this->db->where('username',$username);
$this->db->where('password',$password);
$this->db->from('PM_ADMIN_LIST');
$count = $this->db->count_all_results();
Also, put some debug in - if you knew what the value of $count was then it may have helped you work out that the Active Record query was wrong rather than thinking it was doing an OR instead of an AND.
Simply use-> $this->db->count_all(); instead of $this->db->count_all_results(); problem resolved.......
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With