用CodeIgniter查询MySQL,select字段为NULL的行

我使用CodeIgniter的Active Record类来查询MySQL数据库。 我需要select一个字段没有设置为NULL的表中的行:

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

这只返回这个查询:

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

archived字段是DATE字段。

有没有更好的方法来解决这个问题? 我知道我可以自己写查询,但是我不想在整个代码中保留Active Record。

 where('archived IS NOT NULL', null, false) 

活动logging肯定有一些怪癖。 当你将数组传递给$this->db->where()函数时,它将生成一个IS NULL。 例如:

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

产生

 WHERE `archived` IS NULL 

怪癖是没有等价的消极IS NOT NULL 。 然而,有一种方法可以产生正确的结果,但仍然可以避免这种说法:

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

产生

 WHERE `archived` IS NOT NULL 

空不能设置为string…

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

当null不包含在引号中时,它可以正常工作。

CodeIgniter 3

只要:

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

生成的查询是:

 WHERE archived IS NOT NULL; 

$ this-> db-> where('archived IS NOT NULL', nullfalse ); “不需要

逆:

 $this->db->where('archived'); 

生成的查询是:

 WHERE archived IS NULL; 

更好地使用以下为不是null

where('archived IS NOT NULL',null);

为空

where('archived',null);

只是为了给你另一个select,你可以使用NOT ISNULL(archived)作为你的WHEREfilter。

Codeigniter通过不带参数的呼叫来生成一个“IS NULL”查询:

 $this->db->where('column'); 

生成的查询是:

 WHERE `column` IS NULL 

一种方法来检查任何列是否为null是

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

在PHP中,如果列有数据,则可以表示为True,否则False要在where命令中使用多个比较,并检查列数据是否为空

这里是完整的例子,我是如何筛选where子句(Codeignitor)的列。 最后一个显示非空压缩

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