0

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

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

通用数据库:TABLE 'courses' = 列:id、course_name、price、external_link、tracking_link

站点特定数据库:TABLE 'courses' = 列:id、active、description

每个站点从通用数据库中提取一个课程和课程数据池,然后每个站点可以确定哪些课程是“活动的”。我可以从站点特定的数据库中获取“活动”= 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 的新手,因此可以在必要时提供任何进一步的详细信息。不确定,最需要的是什么。

特雷

4

1 回答 1

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');
于 2012-12-25T09:21:06.240 回答