80 votes

L'interrogation de MySQL avec CodeIgniter, la sélection de lignes dont le premier champ est NULL

J'utilise CodeIgniter Active de la classe d'Enregistrement pour interroger la base de données MySQL. J'ai besoin de sélectionner le nombre de lignes dans une table où un champ n'est pas défini à NULL:

$this->db->where('archived !=', 'NULL');
$q = $this->db->get('projects');

Qui ne retourne que cette requête:

SELECT * FROM projects WHERE archived != 'NULL';

L' archived domaine DATE champ.

Est-il une meilleure façon de résoudre ce problème? Je sais que je peux juste écrire une requête de moi-même, mais je wan pas coller avec l'Enregistrement Actif tout au long de mon code.

152voto

zerkms Points 105994
where('archived IS NOT NULL', null, false)

69voto

J.Money Points 1997

L'Enregistrement Actif a certainement quelques bizarreries. Lorsque vous passez un tableau à l' $this->db->where() de la fonction, il va générer une valeur NULLE. Par exemple:

$this->db->where(array('archived' => NULL));

produit

WHERE `archived` IS NULL 

Le caprice est qu'il n'existe pas d'équivalent pour le négatif, IS NOT NULL. Cependant, il existe un moyen de le faire que produit le résultat correct et s'échappe encore de la déclaration:

$this->db->where('archived IS NOT NULL');

produit

WHERE `archived` IS NOT NULL

7voto

Come2Daddy Points 135

Null ne doit pas être fixé à la chaîne...

$this->db->where('archived IS NOT', null);

Il fonctionne correctement lorsque la valeur null n'est pas enveloppé dans des guillemets.

-2voto

Amir Qayyum Khan Points 171

Une façon de vérifier la colonne est null ou n'est pas

$this->db->where('archived => TRUE);
$q = $this->db->get('projects');

en php si la colonne contient des données, il peut être représenter comme True sinon False Pour utiliser plusieurs de comparaison, où de commande et de vérifier si les données de la colonne n'est pas null faire comme

voici l'exemple complet comment je suis filtre les colonnes dans la clause where (Codeignitor). Le dernier spectacle not NULL Compression

$where = array('somebit' => '1', 'status' => 'Published', 'archived ' => TRUE );
$this->db->where($where);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X