簡體   English   中英

在CodeIgniter中對WHERE子句進行分組

[英]Grouping WHERE clause in CodeIgniter

我有這樣的查詢。

WHERE (timetable_id = '1' 
       OR timetable_id = '2' 
       OR timetable_id = '3' 
       OR timetable_id = '4' 
       OR timetable_id = '5' 
       OR timetable_id = '6')

AND exam_name_id = '5'

但是我不知道如何在Codeigniter中執行此操作。

我已經試過了

while(@$i <= 6 {                         
   $this->db->or_where('timetable_id',$this->input->post('timetable_id'.$i));
   $i++;   
   }                    
$this->db->where('et.exam_name_id',5); 

但是上面的命令給出了這樣的輸出

WHERE timetable_id = '1'
      OR timetable_id = '2' 
      OR timetable_id = '3' 
      OR timetable_id = '4' 
      OR timetable_id = '5' 
      OR timetable_id = '6'
      AND et.exam_name_id = '5'

這給出了所有輸出。 如何正確地做到這一點? 請注意在我的查詢中我有()大括號。

如果您使用的是CI 3.xx版本,則可以使用

$this->db->group_start();
while($i <= 6) {                         
   $this->db->or_where('timetable_id',$this->input->post('timetable_id'.$i));
   $i++;   
   }                    
$this->db->group_end();
$this->db->where('et.exam_name_id',5); 

CI 2.xx版本中,字符串中的傳遞條件

@$i = 1;
$n = $this->input->post('timetable_id'.$i);
$or_where = "(";
$or_where.="timetable_id = $n";
for ($i; $i <= 6; $i++) {
    $n = $this->input->post('timetable_id'.$i);
    $or_where.=" OR timetable_id = $n";
}
$or_where.=")";     
$this->db->or_where($or_where);

這將給您期望的答案。

使用while循環會使自己變得困難。 另外,如果您使用循環構建數字,我也不明白為什么使用$this->input->post() 我會用這樣的for循環:

for ($i = 1; $i <= 6; $i++) {
    $this->db->or_where('timetable_id', $i);
}
$this->db->where('et.exam_name_id', 5);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM