Codeigniter在哪里和or_where共存?

时间:2016-02-26 22:06:33

标签: php sql codeigniter where-clause

我正在尝试在codeigniter中获取where()or_where(),以便在其间使用AND。我想我的查询如下所示。

SELECT fname 
FROM users 
WHERE is_active = 1 AND (
    employee_type = 'graduate' OR employee_type = 'staff' OR employee_type = 'Person Of Interest'
)

这是我目前的代码:

$this->db->select($print_data);
$this->db->from('users');
$this->db->where(array('is_active' => 1));
$where = '';
$this->db->or_where('employee_type', $search_criteria[0]);
for ($i = 1; $i < sizeof($search_criteria); $i++) {
    $this->db->or_where('employee_type', $search_criteria[$i]);
}

以下是我正在制作的输出。有人可以帮忙吗?

SELECT fname 
FROM users 
WHERE is_active = 1 OR employee_type1 = 'graduate' OR employee_type1 = 'staff' OR employee_type1 = 'Person Of Interest'`

1 个答案:

答案 0 :(得分:0)

在CI中使用or_where:

$this->db->select($print_data); 
$this->db->from('users'); 
$this->db->where(array('is_active' => 1)); 

$this->db->where('employee_type', $search_criteria[0]); // CHANGED

for ($i = 1; $i < sizeof($search_criteria); $i++) { 
    $this->db->or_where('employee_type', $search_criteria[$i]); 
}

第二个解决方案:

您也可以where_in。在这种情况下,从0开始循环:

$arr = array();
for ($i = 0; $i < sizeof($search_criteria); $i++) { 
    $arr[] = $search_criteria[$i];
}

$this->db->where_in('employee_type', $arr); // CHANGED