在join中的where子句中传递数组

时间:2017-12-23 20:36:47

标签: php mysql codeigniter

我在CI中有一个自定义查询,它从两个表中获取多个数据我正在实现一个搜索机制,其中使用get请求解析多个参数我想自定义它们查询以根据搜索参数获取数据!

这是我的查询,它正在运行,并且它不包含任何where子句

 return $this->db->query('Select t1.id,t1.course_name,t1.course_duration,t1.course_price,t1.course_category, t2.first_name , t2.last_name , t2.email   
                          from teacher_courses as t1 LEFT JOIN teacher as t2 on t1.teacher_id=t2.id      
                         ')->result_array();

现在查询将保持完全相同我只想根据where子句中的搜索参数输入检索数据

这是我的网址

的格式
http://localhost/online-learning/Home/courses?courses=1-3&teacher=1 

在我的控制器里面我正在做这样的事情

if(isset($_GET['courses'])){
            (isset($_GET['courses'])) ? $get['courses']=explode('-', $_GET['courses']) :"";
            (isset($_GET['teacher'])) ? $get['teacher']=explode('-', $_GET['teacher']) :"";
            echo "<pre>";
            print_r($get);

        }

现在以

的形式检索数据
Array
(
    [courses] => Array
        (
            [0] => 1
            [1] => 3
        )

    [teacher] => Array
        (
            [0] => 1
        )

)

所以如何在我的连接查询的where子句中传递这个数组。

1 个答案:

答案 0 :(得分:2)

$courses = implode(',', $array['courses']);
$teacher = implode(',', $array['teacher']);
return $this->db->query('Select 
t1.id,t1.course_name,t1.course_duration,t1.course_price,t1.course_category, 
t2.first_name , t2.last_name , t2.email   
from teacher_courses as t1 
LEFT JOIN teacher as t2 on t1.teacher_id=t2.id WHERE course_id IN ($courses) AND teacher_id IN ($teacher)')->result_array();