2012-01-25 37 views
21

我正在尋找一種方法來查看生成的查詢字符串,但沒有執行它。在codeigniter執行前沒有執行的迴應查詢活動記錄

請注意,該查詢尚未執行過。 (我不想$this->db->last_query();

我希望與像$this->db->echo_query_string($table_name = '');名稱的方法中使用酷似$this->db->get($table_name = '');但唯一的區別是get()執行的代碼,但echo_query_string()只是呼應的字符串查詢未執行

+1

一個簡單的 - 但可能不是那麼有效 - 我會做的只是稍微修改查詢來做出錯誤的查詢,以便系統顯示錯誤以及簡單的預期錯誤並且不會執行。 – maan81

回答

26

您可以通過這些功能

/* SELECT */ $this->db->_compile_select(); 
/* INSERT */ $this->db->_insert(); 
/* UPDATE */ $this->db->_update(); 
+0

謝謝。這隻適用於選擇查詢嗎?沒有什麼確切的,而不是'get()'?我希望它能夠有一個可選的$ database_name像'get()' –

+0

插入它的$ this - > _ insert()來更新它的$ this - > _ update()但是這兩個需要很少的參數 – Stewie

+0

有沒有文檔關於描述你提到的方法?我想知道他們接受的參數。我認爲它幾乎沒有這樣的文件。我應該通過查看代碼來了解更多細節嗎? –

9

看到編譯的查詢我在DB_active_rec.php

function return_query() 
{ 
    return $this->_compile_select(); 
} 

使用

$this->db->select('id,user_name')->from('user')->where('id',1); 

$string = $this->db->return_query(); 
echo $string; 

結果

加入這個小方法
SELECT `id`, `user_name` FROM (`user`) WHERE `id` = 1 

這樣,你勢必會動用

$this->db->from() 

而不是

$this->db->get() 

它運行查詢

12

你不需要改變任何CodeIgniter的文件,因爲它已經提供了一個方法來做到這一點。

使用

echo $this->db->last_query();

會產生

select * from some_table...

,這是它。

+0

爲什麼-ve票?答案對我來說似乎很完美。最可能的倒票不是爲了失望,所以缺少的是評論。 – Sami

+14

-ve投票,因爲提問者不想運行實際查詢。只是想要什麼查詢將看起來像。 last_query()獲取發送到數據庫的最後一個查詢。 – scotsqueakscoot

+0

這將是正確的! – Latrova