Php Codeigniter活动记录问题(where和multiple';和';';或';)

Php Codeigniter活动记录问题(where和multiple';和';';或';),php,sql,codeigniter,activerecord,Php,Sql,Codeigniter,Activerecord,有人能告诉我如何使用codeigniter活动记录生成以下查询吗 SELECT * FROM `tbl_admins` WHERE (`email`='ci@php.net' OR `uname`='user') AND `upass`='SecretePass'; 没有编写查询, 我的意思是通过数组传递不同的值。。。 或CI活动记录 谢谢你我相信你可以通过几种方式做到这一点。首先,我假设您正在向模型函数传递一个数组,该数组是$filters 选项一 $this->db->sele

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

SELECT * FROM `tbl_admins` WHERE (`email`='ci@php.net' OR `uname`='user') AND `upass`='SecretePass';
没有编写查询, 我的意思是通过数组传递不同的值。。。 或CI活动记录


谢谢你

我相信你可以通过几种方式做到这一点。首先,我假设您正在向模型函数传递一个数组,该数组是
$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"]'");
我没有测试,所以您可能需要调整选项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"]'");
我没有测试,所以您可能需要调整选项2中的变量。但这与你想要的非常接近


下面是一个类似的堆栈溢出问题。

最后我这样写

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

它是有效的:)

最后我这样写

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

它可以工作:)

您可以使用
group\u start()
group\u end()
功能(来自活动记录)将相关where子句分组到不同的组中。以下是语法示例:

$query= $this->db->select('*')
        ->group_start()
        ->or_like($likeColumns)
        ->group_end()
        ->where($whereColumn, $whereValue)
        ->get($table);

您可以使用
group\u start()
group\u end()
功能(从活动记录)将相关where子句分组到不同的组中。以下是语法示例:

$query= $this->db->select('*')
        ->group_start()
        ->or_like($likeColumns)
        ->group_end()
        ->where($whereColumn, $whereValue)
        ->get($table);

您是否阅读了用户指南并尝试了一些方法。这是最好的学习方法。你读过用户指南并尝试过什么吗。这是最好的学习方法。