有人可以告诉我如何使用codeigniter活动记录生成以下查询吗?Codeigniter活动记录问题(其中和多个“与”或“)
SELECT * FROM `tbl_admins` WHERE (`email`='[email protected]' OR `uname`='user') AND `upass`='SecretePass';
不写查询, 我的意思是通过数组传递不同的价值观...... 或CI的Active Record
谢谢
有人可以告诉我如何使用codeigniter活动记录生成以下查询吗?Codeigniter活动记录问题(其中和多个“与”或“)
SELECT * FROM `tbl_admins` WHERE (`email`='[email protected]' 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"]'");
我没有测试,所以你可能需要调整变量选项二的一点在哪里。但是这相当接近你想要的。
这里是another example的一个类似的Stack Overflow问题。
最后我把它写这样......
$conditions = '(`col1`="'.$var1.'" OR `col2`="'.$var1.'") AND `col3`="'.$var2.'"';
$query = $this->db->get_where('table',$conditions);
$result = $query->result();
而且它的工作原理:)
您可以使用group_start()
和group_end()
功能(从活动记录)进行分组有关,其中在单独的条款组。下面是语法示例:
$query= $this->db->select('*')
->group_start()
->or_like($likeColumns)
->group_end()
->where($whereColumn, $whereValue)
->get($table);
您是否阅读了用户指南并尝试了一些内容。这是学习的最佳方式。 – TimBrownlaw