2016-07-31 7 views
0

Ich versuche, eine Liste der Gutscheine durch Ajax zu erhalten, wenn die Checkboxen ausgewählt sind. Alles andere funktioniert einwandfrei, aber die Abfrage gibt nur die erste Übereinstimmung zurück.WHERE_IN gibt nur die erste Übereinstimmung in Codekennung zurück

Also meine Frage ist:

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

Nach diesem meinem sqlquery wird

 

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

Aber diese Abfrage zurückgibt Werte mit coupon_store=1 und keine Ergebnisse kommen für coupon_store=97

Ich überprüfte Werte für den Coupon-Store 97, der in dieser Kategorie existiert.

+0

Da Abfrage ist falsch schaffen. Korrekte Abfrage ist: 'SELECT * FROM tbl_coupons WHERE coupon_store IN ('1', '97') UND coupon_cat = '16' UND coupon_status = 'active''. Betrachten Sie IN ('1', '97') Zitate. Überprüfen Sie, welche Daten in '$ IDs' -Variable sind. – mcklayin

+0

@mcklayin yup danke, es hat funktioniert – mohit

Antwort

0

Die Abfrage ist meist korrekt, außer in Zeile 2, in dem Sie die Änderung zu machen brauchen:

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

alles andere bleibt gleich.

2

Verwenden Sie unter Weg, wenn Daten vorhanden sind, wird es Teil der Abfrage sein.

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

hoffen, dass es die richtige SQL-Abfrage