Codeigniter活动记录问题(在哪里和多个' AND'' OR')

时间:2016-11-30 22:14:11

标签: php sql codeigniter activerecord

有人可以告诉我如何使用codeigniter活动记录生成以下查询吗?

SELECT * FROM `tbl_admins` WHERE (`email`='ci@php.net' OR `uname`='user') AND `upass`='SecretePass';
  

不写查询,   我的意思是通过数组传递不同的值...   或CI活动记录

谢谢

3 个答案:

答案 0 :(得分:2)

我相信你可以通过几种方式做到这一点。首先,我假设您将数组传递给模型函数,该数组为$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"]'");

我没有测试,所以你可能需要调整选项二中的变量。但这与你想要的非常接近。

这是类似Stack Overflow问题的another example

答案 1 :(得分:1)

最后我这样写了......

$conditions = '(`col1`="'.$var1.'" OR `col2`="'.$var1.'") AND `col3`="'.$var2.'"';          
 $query = $this->db->get_where('table',$conditions);
$result = $query->result();

它有效:)

答案 2 :(得分:0)

您可以使用<a asp-controller="topic" asp-action="topic" asp-all-route-data="@Context.GetQueryParameters().WithRoute("band", "iron-maiden").WithRoute("song", "run-to-the-hills");" > Iron Maiden - Run to the hills </a> group_start()功能(来自活动记录)将相关的where子句分组到不同的组中。以下是语法示例:

group_end()