problème avec “count_all_results” et “où” avec Active Record dans CodeIgniter
Dans CodeIngiter guide de l'Utilisateur ,ils ont dit que le code suivant:
$this->db->where('name', $name);
$this->db->where('title', $title);
$this->db->where('status', $status);
//WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
Cela signifie que, lorsque je veux sélectionner quelque chose à partir de la base de données par enregistrement actif,je devrais utiliser where
méthode et il le fera remplacer par AND
entre les champs.
maintenant je veux faire la page de connexion,je fais ceci:
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;
}
}
mais il retournera TRUE si username=$username OR password = $password
.
si un nom d'utilisateur ou mot de passe se trouvent dans le tableau(et $count === 1
il retournera TRUE)
où est mon prbolem et comment dois-je le résoudre?
- Selon la documentation, en appelant "où" deux fois à produire une requête ET. Je ne comprends pas quel est le problème?
- Vous dire que c'est évaluée comme
OR
au lieu deAND
? - Avez-vous essayé le tableau Associatif méthode? Qui codeigniter version utilisez-vous?
Vous devez vous connecter pour publier un commentaire.
est de retourner le nombre de lignes dans la table et ignorning les brides au-dessus d'elle.
Essayer:-
Aussi, mettre de debug - si tu savais ce que la valeur de
$count
était alors il peut avoir vous a aidés à ce que le Dossier de la requête était mal plutôt que de penser qu'il était en train de faire unOR
au lieu d'uneAND
.Simplement utiliser->
$this->db->count_all();
au lieu de
$this->db->count_all_results();
problème résolu.......
Ajouter un second paramètre avec la valeur
false
dans count_all_results() fonction.