gpt4 book ai didi

php - 使用 CodeIgniter get_where 链接 'and' 和 'or' 语句

转载 作者:行者123 更新时间:2023-11-29 04:05:42 25 4
gpt4 key购买 nike

我正在尝试访问本地数据库(在我的虚拟机上)中的数据,我必须使用 CodeIgniter 的查询构建类来获取数据。我在 sql 中找到了这个查询:

select message, created
from logs
where username = 'user'
and (
created > '1487695796'
and created < '1487782196'
)
and (
message = 'login failure'
or message = 'login success'
or message = 'log out'
)
order by created asc

我最大的问题是如何在 CodeIgniter 的 get_where 语句中链接“and”和“or”?我看过并看到我可以将东西放在数组中作为“WHERE”部分,但我还没有看到如何将东西放在“或”中(因为数组中的所有内容都是“和”。我必须使用get_where(不能做'get->where'),所以如果有办法做到这一点,请告诉我!

感谢您花时间阅读我的问题!

最佳答案

自 Codeigniter 3.0 起,查询生成器类支持 Query grouping

来自文档:

$this->db->select('*')->from('my_table')
->group_start()
->where('a', 'a')
->or_group_start()
->where('b', 'b')
->where('c', 'c')
->group_end()
->group_end()
->where('d', 'd')
->get();

// Generates:
// SELECT * FROM (`my_table`) WHERE ( `a` = 'a' OR ( `b` = 'b' AND `c` = 'c' ) ) AND `d` = 'd'

编辑:在您的示例中,您将使用:

$this->db->select('message, created')->from('logs')
->where('username', 'user')
->group_start()
->where('created >', '1487695796')
->where('created <', '1487782196')
->group_end()
->group_start()
->where('message', 'login failure')
->or_where('message', 'login success')
->or_where('message', 'log out')
->group_end()
->order_by('created', 'ASC')
->get();

$this->db->select('message, created')
->group_start()
->where('created >', '1487695796')
->where('created <', '1487782196')
->group_end()
->group_start()
->where('message', 'login failure')
->or_where('message', 'login success')
->or_where('message', 'log out')
->group_end()
->order_by('created', 'ASC')
->get_where('logs', array('username' => 'user') );

// both generate:
//SELECT `message`, `created`
//FROM `logs`
//WHERE `username` = 'user'
//AND ( `created` > '1487695796' AND `created` < '1487782196' )
//AND ( `message` = 'login failure' OR `message` = 'login success' OR `message` = 'log out' )
//ORDER BY `created` ASC

要检查 Codeigniter 生成的查询是否与您的 SQL 匹配,您可以使用:

echo $this->db->last_query(); // echos last query string

关于php - 使用 CodeIgniter get_where 链接 'and' 和 'or' 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42490306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com