2013-05-13 89 views
1

我正在使用表中的select *查詢。刪除SQL查詢中的空列

$query = $this->db->get($table_name); 

我要的是爲它放棄所有記錄,其中一列的值是空的,所以例如

Array 
{ 
    Topic_1 -> 
    Topic_2 -> Cats 
} 

它將放棄TOPIC_1鍵值對完全。我還使用笨的活動記錄,所以我想這樣做

$query = $this->db->get_where($value, array(test_id != 'NULL')); 

但我不能指定每個專欄中,我只是想爲test_id是在表中的所有列?有沒有人可以做到這一點,或者我可以在查詢返回後丟棄不匹配的鍵值對,直接運行一個循環?

回答

3

首先,你正在做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; 

這種方式在$數據你會得到一切該字段是空的。

+0

我實際上並沒有test_id,我只是想讓它檢查每一列是否返回空字段。我怎樣才能做到這一點? – Undermine2k 2013-05-13 19:08:47

+0

你的問題有點混亂。我希望編輯的版本是你需要的。 – Sasha 2013-05-13 19:20:09