WHERE_IN仅返回codeigniter中的第一个匹配项

时间:2016-07-31 09:05:33

标签: php codeigniter

当我选中复选框时,我试图通过ajax获取优惠券列表。所以其他一切都运行正常,但查询只返回第一场比赛。

所以我的查询是:

$this->db->from('tbl_coupons');
        if($storeids !=''){
         $ids = array($storeids);
$this->db->where_in('coupon_store', $ids );
        }       
        $this->db->where('coupon_cat', $catid);
        $this->db->where('coupon_status', 'active');
        $query = $this->db->get();

        if ($query->num_rows() > 0) {
            $ds = $query->result_array();}

根据这个,我的SQLquery变成了


SELECT * FROM `tbl_coupons` 
WHERE `coupon_store` IN('1,97') 
AND `coupon_cat` = '16' 
AND `coupon_status` = 'active'

但此查询返回coupon_store=1的值,coupon_store=97没有结果

我检查了该类别中存在的优惠券商店97的值。

2 个答案:

答案 0 :(得分:2)

如果数据存在,则使用以下方式,它将成为查询的一部分。

        storeids = explode(',',storeids);
        $ids = array();
        foreach($storeids as $val){
            $ids[] = $val;
        }
        if(!empty($ids)){
            $this->db->where_in('coupon_store', $ids );
        }

希望它能创建正确的sql查询

答案 1 :(得分:0)

查询大多是正确的,除了第2行,您需要将更改改为:

WHERE coupon_store IN('1','97')

其他一切都保持不变。