2017-10-20 27 views
0

Je fais cela pour construire une requête et d'obtenir des sièges d'une table « vols » dans CodeIgniterPhp générateur de requêtes pour OU et condition ET

$this->load->database(); 
    $this->load->dbforge(); 
    $where = "seatsF>0 OR seatsB>0 OR seatsE>0"; 
    $this->db->where($where); 
    $this->db->where('approved', 1); 
    $query=$this->db->get("Flights"); 
    $result=$query->result_array(); 
    echo $this->db->last_query(); 
    die; 
    return $result; 

Ma requête en cours généré par le constructeur de requêtes en php est

SELECT * FROM `Flights` WHERE `seatsF` >0 OR `seatsB` >0 OR `seatsE` >0 AND `approved` = 1 

Mais le résultat contient le résultat où « approuvé » = 0 aussi, je suppose que ce que ma requête est en train de faire est qu'il obtient 1 seatsF> 0 puis OU courtscircuits et retourne vrai et il ne vérifie pas vraiment toute requête . Comment puis-je produire une requête comme celle-ci par constructeur de requête: -

SELECT * FROM `Flights` WHERE `(seatsF` >0 OR `seatsB` >0 OR `seatsE` >0) AND `approved` = 1 
+0

Non, c'est différent, je sais comment faire la partie où, était juste confus dans "()" choses. – Asim

Répondre

2

Vous devez envelopper les OR dans().

$where = "(seatsF>0 OR seatsB>0 OR seatsE>0)"; 
+0

Je ne peux pas croire que c'était une chose si simple à faire. Massive merci. – Asim