web-dev-qa-db-fra.com

différence entre $ query> num_rows () et $ this-> db-> count_all_results () dans CodeIgniter & lequel est recommandé

Dans un scénario, je dois connaître le nombre de jeux d'enregistrements renvoyés par une requête, ce qui peut être effectué dans codeigniter avec $query->num_rows() ou $this->db->count_all_results(). Lequel est le meilleur et quelle est la différence entre ces deux?

31
Kumar

Avec num_rows(), vous commencez par exécuter la requête, puis vous pouvez vérifier le nombre de lignes que vous avez obtenues. count_all_results(), par contre, ne vous donne que le nombre de lignes que votre requête produira, mais ne vous donne pas le résultat réel.

// num rows example
$this->db->select('*');
$this->db->where('whatever');
$query = $this->db->get('table');
$num = $query->num_rows();
// here you can do something with $query

// count all example
$this->db->where('whatever');
$num = $this->db->count_all_results('table');
// here you only have $num, no $query
41
danneth

$this->db->count_all_results fait partie d'un Active Record query (préparation de la requête, pour ne renvoyer que le nombre, pas les résultats réels).

$query->num_rows() est exécuté sur un objet resultset (après avoir renvoyé les résultats de la base de données).

5
Jens Roland

Which one is better and what is the difference between these two C'est presque impossible pour moi, quelqu'un veut juste obtenir le nombre d'enregistrements sans toucher à nouveau ou effectuer une autre requête qui implique la même ressource. En outre, après tout, la mémoire utilisée par ces deux fonctions est identique, car avec count_all_result vous effectuez toujours get (en termes de CI AR), je vous recommande donc d'utiliser l'autre (ou d'utiliser count () à la place), ce qui vous a rendu réutilisable avantages.

2
toopay

Il existe deux façons de compter le nombre total d’enregistrements renvoyés par la requête ..__ 

$query = $this->db->query('select blah blah');  
return $query->num_rows();

Cela retournera le nombre de lignes de la requête.

Seconde

return $this->db->count_all_results('select blah blah');

Tout simplement count_all_results nécessitera de réexécuter la requête.

2
Muhammad Raheel

Nous pouvons aussi utiliser 

return $this->db->count_all('table_name');  

ou

$this->db->from('table_name');
return $this->db->count_all_result();

ou

return $this->db->count_all_result('table_name');

ou

$query = $this->db->query('select * from tab');  
return $query->num_rows();
1
Amit Joshi

Simplement comme ci-dessous;

$this->db->get('table_name')->num_rows();

Cela va obtenir le nombre de lignes/enregistrements. Cependant, vous pouvez également utiliser les paramètres de recherche.

$this->db->select('col1','col2')->where('col'=>'crieterion')->get('table_name')->num_rows();

Cependant, il convient de noter que vous verrez des erreurs graves si vous appliquez comme ci-dessous;

$this->db->get('table_name')->result()->num_rows();
0
Shariati
$sql = "select count(*) as row from login WHERE firstname = '" . $username . "' AND password = '" . $password . "'";
    $query = $this->db->query($sql);
    print_r($query);exit;
    if ($query->num_rows() == 1) {
    return true;
    } else {
    return false;
    }
0
Anandavel A

Nombre total de résultats

$this->db->count_all_results('table name');
0
Deepak singh Thakur