php - Codeigniter 数据库 Where 有多个子句,另一个 where

标签 php mysql codeigniter activerecord

所以我承认这个标题有点困惑,我很抱歉,因为我不知道该怎么做,所以欢迎大家提出建议。无论如何,关于实际问题。我有一个查询,大部分情况下工作正常,但我仍然会产生一些错误的结果。也是可以理解的。因为这就是形成查询的方式。对许多人和对许多人松散地串在一起。我需要做的是在 ( ) 中包装一组 where 子句,然后有一个 and 然后在另一个 ( ) 中包含剩余的一组子句> 我不知道这对任何人是否有意义。

基本上,如果我直接手动输入查询,它看起来像..

select * from my_table
where (cond1 = this and cond2 = that) 
and (cond2 != something or cond3 > other)

不太确定如何使用 codeigniter 的事件记录来完成此操作。我目前拥有的是。

$this->db->select('user_event_invite.*, game_bridge.*, user_event.*, user_event.location as bizfo')
->from('user_event')
->join('game_bridge', 'user_event.gID = game_bridge.gID')
->join('user_event_invite', 'user_event_invite.eID = user_event.eID')
->where('user_event_invite.friendID', $mID)
->where('user_event.isactive', 0)
->where('user_event_invite.isactive', 0)
->where('user_event.ends >=', $this->genfunc->unixToMySQL(time()))
->where('user_event.ends !=', '0000-00-00 00:00:00')
->or_where('yes > ', 0)
->or_where('no > ', 0)
->or_where('maybe > ', 0);

但我最终想要的是一组中的所有这些特定条款..

->where('user_event_invite.friendID', $mID)
->where('user_event.isactive', 0)
->where('user_event_invite.isactive', 0)
->where('user_event.ends >=', $this->genfunc->unixToMySQL(time()))
->where('user_event.ends !=', '0000-00-00 00:00:00')

然后将该组与另一组合并并与该组合并。

->or_where('yes > ', 0)
->or_where('no > ', 0)
->or_where('maybe > ', 0);

最佳答案

因此,CodeIgniter 不支持“包装”您的 OR 和 AND SQL 语句,至少不支持使用其抽象层。 CodeIgniter 不推荐混合使用 OR 和 AND 语句。

您可以尝试理解您使用 $this->db->last_query()

执行的查询

你也可以试试这个子查询库,看看能不能帮到你: http://labs.nticompassinc.com/CodeIgniter-Subqueries/

或者您可能只需要在您的情况下使用一些 RAW SQL。

关于php - Codeigniter 数据库 Where 有多个子句,另一个 where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13003885/

相关文章:

mysql 使用 select count() from inner join 更新

mysql - 通过express发布到mysql数据库时出错

javascript - 使用 Ajax、jQuery 和 Codeigniter 根据另一个下拉列表填充下拉列表

php - 从 CodeIgniter 1.7.3 转换到 2.0+

javascript - 如何将日历作为输入模式嵌入到日期文本框,以便用户选择合适的日期?

php - PHP禁止第三方库警告

mysql - 存储 2 亿条记录的最节省空间的方法是什么?

mysql - 代码点火器 : A Database Error Occurred SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

PHP-无法从 mysql 插入和获取阿拉伯数据

php - 用于获取编号数组的 native CodeIgniter 函数(PDO 驱动程序)?