2012-10-19 79 views
1

可以:(條件1 AND條件2)OR(條件3 AND條件4)在codigniter?Codeigniter AND OR和

我嘗試:

$this->db->where(condition1 - condition2); 
$this->db->or_where(condition3 - condition4); 

但這是:(條件1和條件2)或(condition3 OR condition4)

+0

老實說,我不知道有對笨組查詢沒有直接的方式,直到我只是看着它。我一直在使用[Datamapper ORM](http://datamapper.wanwizard.eu/)進行配置,相當一段時間,有一天我會認爲你會喜歡它(並且分組子句很容易)。 –

回答

3

剛寫出來你哪裏

這仍然會轉義數據,你不需要使用or_where方法。

1

你試過這樣的:::::?

$this->db->where(COND1); 
$this->db->where(COND2); 
$this->db->or_where(COND3); 
$this->db->where(COND4); 
0

只需使用普通的查詢,像這樣:

$query="SELECT * 
FROM table1 INNER JOIN table2 on table1.col=table2.col 
WHERE (table1.whatever=? AND table1.hello=?) OR (table2.foo=? AND table2.pizza=?) 
LIMIT 1"; 
$params=array(); 
$params[]='whatever'; 
$params[]='world'; 
$params[]='bar'; 
$params[]='cheese'; 


$result=$this->db->query($query,$params); 
$result=$result->result_array(); 
print_r($result); 
1
$first="(COND1 AND COND2)"; 
$second= "(COND3 AND COND4)"; 

$query=$this->db->where($first)->or_where($second)->get(); 
1

是有可能,爲了方便把你要使用到一個變量

$where ="(condition 1 AND condition2) OR (condition3 AND condition4)"; 
$this->db->where($where); 
0

如果任何條件你正在使用PHP5,那麼下面的代碼將解決你的問題。

$this->db->select("*") 
->where("condition_1 && condition_2") 
->or_where("condition_3 && condition_4"); 

或者使用下面的代碼也可以。

$this->db->where("condition_1 "); 
$this->db->where("condition_2"); 
$this->db->or_where("condition_3 "); 
$this->db->where("condition_4 ");