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

问题描述 投票:0回答:1

我在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子句中传递此数组。

php mysql codeigniter
1个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.