2016-07-31 95 views
0

我试图通过ajax选择复选框时获取优惠券列表。所以其他一切工作正常,但查询只返回第一个匹配。WHERE_IN只返回codeigniter中的第一个匹配

所以我的查询是:

$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的值。

+0

。 正确的查询是:'SELECT * FROM tbl_coupons WHERE coupon_store IN('1','97')AND coupon_cat ='16'AND coupon_status ='active''。 看IN('1','97')引号。 检查'$ ids'变量中的数据。 – mcklayin

+0

@mcklayin y感谢它的工作 – mohit

回答

0

查询主要是正确的,除了在第2行,你需要做出改变为:

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

一切保持不变。

2

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

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

希望,因为查询不正确,它会创建正确的SQL查询

相关问题