[英]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.