Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

problem with "count_all_results" and "where" with Active Record in CodeIgniter

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?
like image 237
Moein Hosseini Avatar asked Sep 26 '11 10:09

Moein Hosseini


2 Answers

$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.

like image 121
Bruce Avatar answered Nov 12 '22 17:11

Bruce


Simply use-> $this->db->count_all(); instead of $this->db->count_all_results(); problem resolved.......

like image 26
Sachin Avatar answered Nov 12 '22 18:11

Sachin