使用来自单独数据库的数组过滤数据库查询结果

时间:2012-12-25 09:18:19

标签: php database codeigniter

我有一堆网站都从单个数据库中提取数据。所有这些几乎完全相同,并建立在CodeIgniter上。

然后每个人都有一个单独的数据库,其中包含特定于该网站的数据。

通用数据库: 表'courses'= 列:id,course_name,price,external_link,tracking_link

网站特定数据库: 表'courses'= 列:id,活动,描述

每个站点从通用数据库中提取一个课程和课程数据池,但随后每个站点都可以确定哪些课程是“活动的”。我可以从Site Specific数据库中获取“active”= 1的行的所有ID,并将它们传递给数组。

但后来我想使用该查询中的ID作为通用数据库的过滤器,将该课程数据提取到网站的各个部分。

这是我的模特:

public function getActiveCourses() {

    $local_db = $this->load->database('local', TRUE);
    $universal_db = $this->load->database('universal', TRUE);       


    $activeCourses =    $local_db
                ->where('active', 1)
                ->select('id')
                ->get('courses');
    $activeList = $activeCourses->result_array();



    $allCourses =   $universal_db
            ->where('id', $activeList)
            ->get('courses');

    return $allCourses->result_array();

}

但是我收到以下错误

 Error Number: 1054

 Unknown column 'Array' in 'where clause'

 SELECT * FROM (`courses`) WHERE `id` = Array

 Filename: /models/courses.php

 Line Number: 39

第39行是:

$allCourses =       $universal_db
            ->where('id', $activeList)
            ->get('courses');  <== Line 39

return $allCourses->result_array();

我一直在搜索和玩这个几个小时。任何帮助都非常值得赞赏。

CI和php的新手可以在必要时提供任何进一步的细节。不确定蝙蝠,最需要的是什么。

特雷

1 个答案:

答案 0 :(得分:0)

好吧,$ activeList是一个数组,但你需要提供一个值:

$activeList = $activeCourses->result_array(); // see, "result_array"
// here you're returning the row in array format (array ['id'] =>...)
$allCourses =   $universal_db
            ->where('id', $activeList)  // here are you using the whole array!
            ->get('courses');

应该是这样的:

$allCourses =   $universal_db
            ->where('id', $activeList['id']) // passing the specific array index
            ->get('courses');