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

标签 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->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 是(如探查器中所见):

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)

我的问题是,当我var_dump() 此查询的结果时,booking_id 值设置为NULL。 另一方面,当我在我的 phpmyadmin 中运行 SQL 时,一切顺利,我可以看到 booking_id

PS:client_booking 表的主键是id,这是所有其他表的booking_id

谁能帮我解决这个问题?

最佳答案

您正在使用 LEFT/RIGHT 联接,因此当您的表之间没有关联时,将返回一个空行,第二件事是您的表 new_invoiceexecutive_client_unit_relation 列名称 booking_id 都有通用名称,并且在您的选择语句中您正在执行 select * 所以对于具有相同名称的列,我猜是最后一个选择一个为空的解决方案,您要么只选择需要的列,而不是全部像 SELECT cb.* 要么列与您的查询表具有相同的名称,然后使用您的别名单独指定它们希望提供但在查询中选择语句的末尾,如 SELECT *,cb.id AS booking_id,....

关于php - Codeigniter 未显示 MySQL 查询获取的数组的正确结果。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23629165/

相关文章:

php - 当值为 null 时查询出现问题

php - 魔术报价关闭,仍然斜线

php - 双空值联合php

PHP - HTML 中的输出正确,但浏览器给出 500 内部服务器错误

python - 从 MySQL 数据库 Python 填充下拉列表

sql - 如何从表中查找特定列?

php - 带限制的 SQL 查询在 phpmyadmin 中不起作用

php - 如何使用 GROUP BY 和 ORDER BY 关键字从表中获取数据?

php - 在 MySQL 中使用时间而不是字符串 CURRENT_DATE 是个好主意吗?

php - mysql : fetch multidimensional arrays separated and sorted by date column