在MySQL内部的where子句中传递变量查询PHP CodeIgniter

时间:2016-05-23 12:54:44

标签: php mysql codeigniter

我使用codeigniter版本2.

如何从查询中的where子句传递$ idCabang和$ tahun?

public function getListPendapatan($idCabang,$tahun)
{
    $idCabang=$this->input->post('id_cabang');
    $tahun=$this->input->post('tahun');

    $query = '
    SELECT `a`.`NAMA_BULAN` AS `Bulan`,
    CASE WHEN `b`.`TOTAL_STLH_DISC` IS NULL
    THEN 0
    ELSE `b`.`TOTAL_STLH_DISC`
    END AS `Total_Pendapatan`
    FROM `tbl_bulan` AS `a`
        LEFT JOIN (
        SELECT MONTH(`tbl_transaksi_jual`.`TGL_TRANSAKSI`) AS `TGL_TRANSAKSI` , SUM(`tbl_transaksi_jual`.`TOTAL_STLH_DISC`) AS `TOTAL_STLH_DISC`
        FROM `tbl_transaksi_jual`
        WHERE `tbl_transaksi_jual`.`ID_CABANG`="'.$idCabang.'" AND 
            YEAR(`tbl_transaksi_jual`.`TGL_TRANSAKSI`)= "'.$tahun.'"
        GROUP BY MONTH(`tbl_transaksi_jual`.`TGL_TRANSAKSI`)
        ) AS `b` ON `a`.ID_BULAN = `b`.`TGL_TRANSAKSI`
    ORDER BY `a`.ID_BULAN ASC';

    $result = $this->db->query($query, '');
    if($result -> num_rows()>0)
    {
        return $result->result();
    }
    else
    {
        return false;
    }

}

它不起作用。为什么?

我想在where子句中创建一个输入变量。

1 个答案:

答案 0 :(得分:0)

替换询问的连接并将数组放入$ this-> db-> query()...

执行此操作:

$query = '
    SELECT `a`.`NAMA_BULAN` AS `Bulan`,
    CASE WHEN `b`.`TOTAL_STLH_DISC` IS NULL
    THEN 0
    ELSE `b`.`TOTAL_STLH_DISC`
    END AS `Total_Pendapatan`
    FROM `tbl_bulan` AS `a`
        LEFT JOIN (
        SELECT MONTH(`tbl_transaksi_jual`.`TGL_TRANSAKSI`) AS `TGL_TRANSAKSI` , SUM(`tbl_transaksi_jual`.`TOTAL_STLH_DISC`) AS `TOTAL_STLH_DISC`
        FROM `tbl_transaksi_jual`
        WHERE `tbl_transaksi_jual`.`ID_CABANG`= ? AND 
            YEAR(`tbl_transaksi_jual`.`TGL_TRANSAKSI`)= ?
        GROUP BY MONTH(`tbl_transaksi_jual`.`TGL_TRANSAKSI`)
        ) AS `b` ON `a`.ID_BULAN = `b`.`TGL_TRANSAKSI`
    ORDER BY `a`.ID_BULAN ASC';

    $result = $this->db->query($query, array($idCabang, $tahun));