簡體   English   中英

Codeigniter Active Record問題(在哪里以及多個“ AND”“ OR”)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM