2010-06-04 21 views
19

मैं कोड इग्निटर वेबैप के साथ एक MySQL डेटाबेस से चुनने के लिए निम्न कोड का उपयोग कर रहा हूं:कोडइग्निटर: WHERE क्लॉज और OR क्लॉज का उपयोग कैसे करें

$query = $this->db->get_where('mytable',array('id'=>10)); 

यह बहुत अच्छा काम करता है! लेकिन मैं सीआई लाइब्रेरी का उपयोग कर निम्नलिखित MySQL कथन लिखना चाहता हूं?

SELECT * FROM `mytable` WHERE `id`='10' OR `field`='value' 

कोई विचार? धन्यवाद!

उत्तर

32
$where = "name='Joe' AND status='boss' OR status='active'"; 

$this->db->where($where); 
+0

हालांकि मैं केवल 3 साल देर से हूं, लेकिन यह किस तालिका से प्राप्त होगा? तालिका –

+2

को निर्दिष्ट करने के लिए कैसे करें, हालांकि मैं एक महीने के 3/4 देर से हूं, फिर भी आप अपने कहां खंडों के परिभाषित होने के बाद निम्नलिखित निष्पादित करते हैं ... $ यह-> डीबी-> प्राप्त करें ("tbl_name"); – James

+0

'$ कहां = '(नाम =" जो "और स्थिति =" बॉस "या स्थिति =" सक्रिय ")'; देखें: http://stackoverflow.com/a/9941814/594235 – Sparky

28

आप उस के लिए or_where() का उपयोग कर सकते हैं - सीआई डॉक्स से उदाहरण:

$this->db->where('name !=', $name); 

$this->db->or_where('id >', $id); 

// Produces: WHERE name != 'Joe' OR id > 50 
+0

दस्तावेज़ीकरण के अनुसार या कहीं भी है पदावनत। http://codeigniter.com/user_guide/database/active_record.html –

+6

मेरा मानना ​​है कि आपने इसे गलत तरीके से पढ़ा होगा। ऐसा लगता है कि पुरानी विधि, या कहीं() को नई विधि या_where() के पक्ष में बहिष्कृत कर दिया गया है। – Rookwood

+0

इसे स्पष्ट करने के लिए धन्यवाद! 4 साल बाद भी बड़ी मदद! – Awilson089

11

आप इस का उपयोग कर सकते हैं:

$this->db->select('*'); 
$this->db->from('mytable'); 
$this->db->where(name,'Joe'); 
$bind = array('boss', 'active'); 
$this->db->where_in('status', $bind); 
+0

मुझे परिणाम कैसे प्राप्त होंगे? – Sahan

+0

परिणाम कहां संग्रहीत किए जाते हैं? – Sahan

6

सक्रिय रिकॉर्ड विधि or_where इस्तेमाल किया जाता है:

$this->db->select("*") 
->from("table_name") 
->where("first", $first) 
->or_where("second", $second); 
0
$where = "name='Joe' AND status='boss' OR status='active'"; 

$this->db->where($where); 

हालांकि मैं एक महीने के 3/4 हूँ देर से, आप अभी भी निम्नलिखित को निष्पादित करें अपने जहां खंड परिभाषित कर रहे हैं के बाद ... $this->db->get("tbl_name");

0

क्या मेरे लिए काम किया:

$where = ''; 
    /* $this->db->like('ust.title',$query_data['search']) 
     ->or_like('usr.f_name',$query_data['search']) 
     ->or_like('usr.l_name',$query_data['search']);*/ 
     $where .= "(ust.title like '%".$query_data['search']."%'"; 
     $where .= " or usr.f_name like '%".$query_data['search']."%'"; 
     $where .= "or usr.l_name like '%".$query_data['search']."%')"; 
     $this->db->where($where); 



$datas = $this->db->join(TBL_USERS.' AS usr','ust.user_id=usr.id') 
      ->where_in('ust.id', $blog_list) 
      ->select('ust.*,usr.f_name as f_name,usr.email as email,usr.avatar as avatar, usr.sex as sex') 
      ->get_where(TBL_GURU_BLOG.' AS ust',[ 
       'ust.deleted_at'  => NULL, 
       'ust.status'  => 1, 
      ]); 

मैं क्या करना है इस तरह की एक क्वेरी बनाने के लिए:

SELECT `ust`.*, `usr`.`f_name` as `f_name`, `usr`.`email` as `email`, `usr`.`avatar` as `avatar`, `usr`.`sex` as `sex` FROM `blog` AS `ust` JOIN `users` AS `usr` ON `ust`.`user_id`=`usr`.`id` WHERE (`ust`.`title` LIKE '%mer%' ESCAPE '!' OR `usr`.`f_name` LIKE '%lok%' ESCAPE '!' OR `usr`.`l_name` LIKE '%mer%' ESCAPE '!') AND `ust`.`id` IN('36', '37', '38') AND `ust`.`deleted_at` IS NULL AND `ust`.`status` = 1 ;