2011-06-01 94 views
1

有沒有辦法檢索我查詢中添加的「where」子句? 我使用foreach語句將當前查詢的where子句中要添加的列添加到列表中,但由於子句可能爲空(未添加列,foreach中存在0次迭代),查詢將檢索所有記錄數據庫因爲沒有限制在哪裏。 當然,我可以使用布爾變量來知道每個foreach是否至少進行了1次迭代,但我想知道是否有可能檢索到與我正在查詢的相關信息。 八九不離十我正在使用的代碼:檢索CodeIgniter中的where子句Activerecord

foreach($columns as $column => $value){ 
    if($column!=''){ 
     $this->db->where($column,$value); 
    } 
} 
$this->db->get('mytable'); 

一些解釋:

如果$列是emptry串,我不把它添加到查詢。

$ columns var是一個對象(stdClass)。因此,如果查詢中沒有「where」語句,我不想​​用$ this-> db-> get()檢索任何信息。我正在尋找的是類似於

if(! empty($this->db->where_clauses())) 
    $this->db->get('mytable'); 

是否有類似的東西?

謝謝。

回答

2

不能直接:它是一個黑客攻擊的一位,但你可以這樣做:

if(! empty($this->db->ar_where)) 

試一下,看看它是否工作。

+0

非常感謝。我還沒有嘗試過。 – ecruz 2011-06-03 16:18:57

-1
foreach($columns as $column => $value){ 
    if($column!=''){ 
     $this->db->where($column,$value); 
    } 
} 

if (count($columns) > 0) 
$this->db->get('mytable'); 
+0

這個答案是錯誤的。再看看這個問題。在所有索引都等於空字符串的情況下,對列進行計數將不會執行任何操作。看到這裏:http://ideone.com/Sfs8I – treeface 2011-06-01 19:22:51

+0

等一下,他說:「想添加當前查詢的where子句,但是,由於子句可能是空的(沒有添加列,所以在foreach中有0次迭代)」。如果沒有迭代,則表示其計數爲0. – 2011-06-01 21:02:58