[英]Codeigniter Active Record issue (where and multiple 'AND' 'OR')
有人可以告訴我如何使用codeigniter活動記錄生成以下查詢嗎?
SELECT * FROM `tbl_admins` WHERE (`email`='ci@php.net' OR `uname`='user') AND `upass`='SecretePass';
不寫查詢,我的意思是通過數組傳遞不同的值...或CI Active Record
謝謝
我相信您可以通過幾種方式做到這一點。 首先,我假設您要將一個數組傳遞給模型函數,而該數組是$filters
。
選項一
$this->db->select('*');
$this->db->from('tbl_admins');
$this->db->where('email', $filters["email"]);
$this->db->or_where('uname', $filters["email"]);
$this->db->where('upass', $filters["password"]);
選項二
$this->db->select('*');
$this->db->from('tbl_admins');
$this->db->where("(email = '$filters["email"]' OR uname = '$filters["email"]') AND upass = '$filters["password"]'");
我沒有測試,所以您可能需要在選項二的位置進行一些調整。 但這與您想要的相當接近。
這是類似的堆棧溢出問題的另一個示例 。
終於我這樣寫了...
$conditions = '(`col1`="'.$var1.'" OR `col2`="'.$var1.'") AND `col3`="'.$var2.'"';
$query = $this->db->get_where('table',$conditions);
$result = $query->result();
它有效:)
您可以使用group_start()
和group_end()
功能(來自活動記錄)將相關的where子句分組到單獨的組中。 這是語法示例:
$query= $this->db->select('*')
->group_start()
->or_like($likeColumns)
->group_end()
->where($whereColumn, $whereValue)
->get($table);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.