简体   繁体   English

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

[英]Passing Variable in where clause inside MySQL queries PHP CodeIgniter

I use codeigniter version 2. 我使用codeigniter版本2。

How can I pass the $idCabang and $tahun from where clause inside the query? 如何在查询中的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;
    }

}

It didn't works. 它没有用。 Why ? 为什么呢

I want to make an input variable in where clause. 我想在where子句中输入变量。

Replace the concatenations for the interrogations and put an array in $this->db->query()... 替换查询的串联并将数组放入$ this-> db-> query()...

Do this: 做这个:

$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));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM