我有一堆网站都从单个数据库中提取数据。所有这些几乎完全相同,并建立在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的新手可以在必要时提供任何进一步的细节。不确定蝙蝠,最需要的是什么。
特雷
答案 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');