web-dev-qa-db-fra.com

CodeIgniter: comment utiliser la clause WHERE et la clause OR

J'utilise le code suivant pour sélectionner dans une base de données MySQL avec une webapp Code Igniter:

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

Cela fonctionne très bien! Mais je veux écrire l'instruction MySQL suivante en utilisant la bibliothèque CI?

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

Des idées? Merci!

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

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

Vous pouvez utiliser or_where () pour cela - exemple des documents CI:

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

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

// Produces: WHERE name != 'Joe' OR id > 50
30
Rookwood

Vous pouvez utiliser ceci:

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

Méthode d'enregistrement active or_where doit être utilisé:

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

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

Bien que j'ai 3/4 de mois de retard, vous exécutez toujours ce qui suit après la définition de vos clauses where ... $this->db->get("tbl_name");

3
Pullat Junaid

Ce qui a fonctionné pour moi:

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

Je dois faire cela pour créer une requête comme celle-ci:

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 ;
1
LOKENDRA