2013-04-11 43 views
27

查詢執行是否發生在以下codeigniter活動記錄語句的get_where()子句中?

$this->db->select('*'); 
    $q = $this->db->get_where('Contacts', array('id' => $contact_id)); 

    $sql = $this->db->last_query(); 

或者您撥打result_array()後會發生嗎?

而且是$this->db->last_query();獲取查詢字符串的可靠方法。

回答

61

查詢執行發生在所有得到像

$this->db->get('table_name'); 
$this->db->get_where('table_name',$array); 

方法雖然last_query包含如果你想查詢字符串不執行,你將不得不做這是運行

$this->db->last_query(); 

上次查詢這個。 進入系統/數據庫/ DB_active_rec.php從這些功能中刪除公共或受保護的關鍵字

public function _compile_select($select_override = FALSE) 
public function _reset_select() 

現在你可以編寫查詢,並把它在一個變量

$this->db->select('trans_id'); 
$this->db->from('myTable'); 
$this->db->where('code','B'); 
$subQuery = $this->db->_compile_select(); 

現在,所以如果你想重新查詢要寫另一個查詢,該對象將被清除。

$this->db->_reset_select(); 

然後就完成了。乾杯!!! 注意:使用這種方法,你必須使用

$this->db->from('myTable') 

代替

$this->db->get('myTable') 

它運行查詢。

Take a look at this example

+0

歡迎並沒有problemo!他們將在新版本的CI中添加這兩種方法(還有一些用於插入,更新和刪除等),所以我們不需要破解它。 – 2013-04-12 12:22:54

+0

@raheelshan這只是拯救了我的生命。你有沒有關於他們爲什麼使這個功能受到保護的任何信息? http://stackoverflow.com/questions/9232316/is-there-a-function-like-compile-select-or-get-compiled-select – motto 2013-07-11 05:20:58

+0

請不要用'_'調用任何方法,這意味着私人訪問(而不是從外面)。這不是解決方案,而是稍後更新時的問題(當他們爲其方法添加真正的訪問級別時)。 – Roland 2017-09-20 15:53:24