我正在使用一个select *查询表
$query = $this->db->get($table_name);
我想让它丢弃所有列值为空的记录例如
Array
{
Topic_1 ->
Topic_2 -> Cats
}
它将完全丢弃Topic_1键和值对。我也在使用Codeigniter活动记录所以我试着做
$query = $this->db->get_where($value, array(test_id != 'NULL'));
但是我不能指定每列,我只是想test_id是表中的所有列?是否有人可以这样做,或者我可以在查询返回后运行循环,它丢弃不匹配的键值对?
首先,你做NULL是错误的。你应该这样做:
$query = $this->db->where('test_id !=', NULL)->get($value)->result_array();
该查询将在字段为NULL时工作,但在您的情况下,它不是NULL,它是空的。为了使字段为NULL,您必须在创建表时将其指定为默认值。您的案例的查询将是:
$query = $this->db->where('test_id !=', '')->get($value)->result_array();
对于所有字段,我猜您需要使用foreach循环:
$data = array();
$field = array('field1', 'field2', ...);
foreach($field as $f) :
$query = $this->db->where($f, '')->get('table')->result_array();
$data = $data + $query;
endforeach;
这样,在$data中,您将获得所有空字段。