2017-10-20 2 views
0
私は、クエリを構築するために、PHPは

PHPのクエリビルダとAND条件

ある中で私の現在のクエリがクエリビルダによって生成され

$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; 

CodeIgniterの中で「便」テーブルから議席を得るためにこれをやっている

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

しかし、結果は= 0はまた、私は私のクエリが何をしているかを推測する「承認」は、それが1 seatsF> 0、その後OR shortcircuitsを取得し、trueを返し、それは本当に全体のクエリをチェックしていないことである結果が含まれています。クエリビルダで次のようなクエリを作成するにはどうすればよいですか: -

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

いいえ、違いはありますが、私はどこの部分を行うかを知っていますが、ちょうど "()"のものに混乱していました。 – Asim

答えて

2

ORを()内にラップする必要があります。

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

そのような単純なことは信じられません。大変感謝します。 – Asim