MoeinHm MoeinHm - 1 year ago 95
PHP Question

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?

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

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download