我有这样的查询。
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'
这给出了所有输出。如何正确地做到这一点?
请注意我的查询中有()
个大括号。
答案 0 :(得分:2)
如果您使用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
版本传递条件中
答案 1 :(得分:1)
@$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);
这将给出您期望的答案。
答案 2 :(得分:0)
你自己很难使用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);