2012-07-27 116 views
1

是CI中或PHP能夠擴展MySQL的聲明。例如。如果我有$query1。我可以在另一個$this->db->query()實例添加到$query1擴展MySQL的聲明

$query1 = this->db->query("SELECT * FROM users WHERE a = b"); 

$query1(or 2) = $this->db->query("AND b = c"); 
+1

@SnowBlind:我認爲他試圖在他的表現的例子問題... – 2012-07-27 20:55:55

+0

@火箭嗯,那麼工作呢? – 2012-07-27 20:59:00

+0

不,它沒有工作 – 2012-07-27 21:31:36

回答

5

把你的陳述在var和擴展字符串,如果需要:

$strStatement = "SELECT * FROM users WHERE a = b"; 

if (/* whatever */) 
{ 
    $strStatement .= " AND b = c"; 
} 

$objResult = $this->db->query($strStatement); 
+0

不錯。謝謝你的信息 – 2012-07-27 21:31:24

+0

@MichaelGrigsby我不知道你爲什麼接受這個答案,因爲它沒有利用* codeigniter中的任何*高級功能。有一些已經寫好的類可以幫助你準確地完成你想要做的事情,而不僅僅是這一點。請參閱下面的答案,並閱讀文檔... ** – orourkek 2012-07-27 23:11:18

+0

我不喜歡搗亂CodeIgniter的MySQL方法,主要是因爲我不能使用NOW()函數。談到Ci時,我不會使用這些或模型 – 2012-07-28 02:35:01

0

check out the documentation。這是可以實現(作爲一個例子)與:

$this->db->where('a', 'b'); 
if($condition) 
{ 
    $this->db->where('b', 'c'); 
} 
$this->db->get('users'); //implicitly runs a "SELECT *" 
+0

誰低估了護理評論爲什麼?這是一種完全有效(更高效)的方式來完成OP所要求的... – orourkek 2012-07-27 23:08:14

+0

爲什麼你認爲這樣更高效?你不覺得,通過調用3個對象方法而不是隻調用一個方法,你會有更多的開銷嗎?但你是對的,低估這個答案是'錯誤的'。 (_wasnt我btw_) – Raisch 2012-07-28 10:13:21

+0

這是我,我同意@Raisch。反對票是因爲接受的答案更快,只能調用一次對象。你正在呼叫三次對象。這很好,以避免這樣的事情獲得世代時間... – 2012-07-30 13:55:39