Php Codeigniter未显示MySQL查询获取的数组的正确结果。

Php Codeigniter未显示MySQL查询获取的数组的正确结果。,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,我正在使用Codeigniter处理mysql数据库, 我有一个模型函数 public function get_all_data(){ $this->output->enable_profiler(TRUE); $years = $this->input->post('year'); $months = $this->input->post('month'); $exec_ids = $this->input->p

我正在使用Codeigniter处理mysql数据库, 我有一个模型函数

public function get_all_data(){
    $this->output->enable_profiler(TRUE);
    $years = $this->input->post('year');
    $months = $this->input->post('month');
    $exec_ids = $this->input->post('exec_id');
    $query = $this->db->query("SELECT * FROM client_booking AS cb
        RIGHT OUTER JOIN executive_client_unit_relation AS ecur ON cb.id = ecur.booking_id
        LEFT OUTER JOIN new_invoice ON cb.id = new_invoice.booking_id
        WHERE ecur.executive_id IN (" . implode(',', $exec_ids) . ") AND MONTH(cb.booking_date) IN (" . implode(',', $months) . ") AND YEAR(cb.booking_date) IN (" . implode(',', $years) . ")");
    return $query->result();
}
由此生成的sql是(如分析器中所示):

我的问题是,当我
var\u dump()
查询结果时,
booking\u id
值设置为
NULL
。 另一方面,当我在phpmyadmin中运行SQL时,一切都很顺利,我可以看到预订id

PS:
client\u booking
表的主键是
id
,它是所有其他表的
booking\u id


有人能帮我解决这个问题吗

您正在使用
左/右
联接,因此当在表之间未找到关联时,将返回空行,第二件事是您的表
new\u invoice
executive\u client\u unit\u relationship
都有相同的列名
booking\u id
,在select语句中,您正在执行
select*
,因此对于同名的列,我猜最后一个是空的,对于解决方案,您可以只选择所需的列,而不是全部像
select cb.*
,或者这些列与您的查询表具有相同的名称,然后使用您希望提供的别名分别指定它们,但在查询中的select语句末尾,如
select*,cb.id作为预订id,…

SELECT * FROM client_booking AS cb 
        RIGHT OUTER JOIN executive_client_unit_relation AS ecur ON cb.id = ecur.booking_id 
        LEFT OUTER JOIN new_invoice ON cb.id = new_invoice.booking_id 
        WHERE ecur.executive_id IN (4,5,6) AND MONTH(cb.booking_date) IN (1,2,3,4,5) AND YEAR(cb.booking_date) IN (2013,2014)