La valeur est NULL Codeigniter
Im essayant de créer la déclaration suivante (qui fonctionne):
SELECT id, COUNT(*) AS item_count FROM message WHERE user_id_to = '1' AND read_date IS NULL GROUP BY message_id
Avec Codeigniters Enregistrement Actif. Mon code ressemble à ceci:
$this->db->select('id');
$this->db->from('message');
$this->db->where('user_id_to', $this->session->userdata('id'));
$this->db->where(array('read_date' => NULL));
$this->db->group_by('message_id');
echo $this->db->count_all_results();
J'ai vérifié si $this->session->userdata('id') sorties le même ID que mon "régulier" instruction SQL et qu'il est correct.
La chose étrange est que mon "régulier" instruction renvoie 2, qui est à droite. Mais mon Codeigniter statmenet renvoie 3, ce qui est évidemment faux.
Ce que je fais mal?
Pourquoi
J'ai essayé aussi
OK, je vois.
$this->db->where(array('read_date' => NULL));
au lieu de $this->db->where('read_date', NULL);
J'ai essayé aussi
$this->db->where('read_date', NULL);
. Pourquoi j'ai c'est parce que je l'ai lu dans ce fil: stackoverflow.com/questions/2489453/...OK, je vois.
$this->db->last_query();
est un excellent outil de débogage parfoisOriginalL'auteur JohnSmith | 2013-11-05
Vous devez vous connecter pour publier un commentaire.
count_all_results()
va remplacer l'ensemble de votre clause SELECT et le produit de la requête sera présent:... Je suis en ignorant toutes les parenthèses et en caractères d'échappement, bien sûr, mais ils sont hors de propos ici.
Viens de mettre le tout dans votre
select()
appel:OriginalL'auteur Narf
Essayez ceci:
Le troisième paramètre lui dit de ne pas échapper à la clause...
Mais qui fonctionne. ^^ Peut-être que la poste a créé SQL avec
$this->db->last_query();
et votre "normal" de SQL contre elle...Je reçois ce lors de l'echo avec last_query();
SELECT COUNT(*) AS
numrows` DE (message
) OÙuser_id_to
= '1' ETread_date
EST NULL GROUP BYmessage_id
Maintenant, je vois le problème. Il est
$this->db->count_all_results();
Qui ne fournit pas correct de ma structure de code.Ah bien sûr.. lorsque vous utilisez
count
vous obtenez toujours une seule ligne. ^^OriginalL'auteur Petra
C'est le groupe par en combinaison avec count_all_results(); Trouvé ce fil avec une solution: http://ellislab.com/forums/viewthread/131724/
OriginalL'auteur JohnSmith
C'est le moyen de comparaison multiple où la commande. pour vérifier si les données de la colonne n'est pas null
faire comme
ici est l'exemple complet comment je suis filtre les colonnes dans la clause where (Codeignitor). Le dernier spectacle de Pas NULL Compression
OriginalL'auteur Amir Qayyum Khan
Bien, je pense que d'une autre manière, il pourrait être:
Ne l'ai pas testé encore, mais, en théorie, devrait fonctionner, quelqu'un s'il vous plaît confirmer.
OriginalL'auteur César Eduardo Cárdenas Fuentes