当前位置: 首页 > 面试题库 >

动态Active Record查询中的Codeigniter括号

万修为
2023-03-14
问题内容

我正在使用ActiveRecord生成如下查询

SELECT * FROM (`foods`) WHERE `type` = 'fruits' AND 
       `tags` LIKE '%green%' OR `tags` LIKE '%blue%' OR `tags` LIKE '%red%'

和的数量tags未知。数组是动态创建的。下面我添加了一个可能的数组。

$tags = array (                 
        '0'     => 'green'.
        '1'     => 'blue',
        '2'     => 'red'
);

具有一个标签数组,我使用以下循环创建我发布在顶部的查询。

$this->db->where('type', $type); //var type is retrieved from input value

foreach($tags as $tag):         
     $this->db->or_like('tags', $tag);
endforeach;

问题:我需要在LIKE子句周围添加括号,如下所示:

SELECT * FROM (`foods`) WHERE `type` = 'fruits' AND 
      (`tags` LIKE '%green%' OR `tags` LIKE '%blue%' OR `tags` LIKE '%red%')

如果括号中的内容是静态的,但是foreach循环使我失望,我知道如何实现此目的。


问题答案:

从CI Wiki:

Codeignighter ActiveRecord功能使您可以相对简单地且独立于数据库地创建SQL查询,但是对于在SQL查询中包含括号没有特定的支持。

例如,当您希望以下语句同时出现where语句时:

WHERE (field1 = value || field2 = value) AND (field3 = value2 || field4 = value2)

可以通过将字符串输入CI-> db-> where()函数来解决此问题,在这种情况下,您将希望专门转义您的值。

请参见以下示例:

$value=$this->db->escape($value);
$value2=$this->db->escape($value2);
$this->db->from('sometable');
$this->db->where("($field = $value || $field2 = $value)");
$this->db->where("($field3 = $value2 || $field4 = $value2)");
$this->db->get();

可以对LIKE子句使用类似的解决方法:

$this->db->where("($field LIKE '%$value%' || $field2 LIKE '%$value%')");
$this->db->where("($field3 LIKE '%$value2%' || $field4 LIKE '%$value2%')");


 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 在同一网页上显示两个表的数据 (1个答案) 7年前关闭。 我在CodeIgniter中使用联接查询,但无法使其正常工作。它仅显示一个表数据,而不显示其他表数据。我是CodeIgniter的新手,无法解决此问题。请别人帮我。提前谢谢。 看法 控制器 模型 编辑 的结果 是一个如下数组: 表结构 证书 cid(PRIMARY),姓名,second_name,

  • 问题内容: 我有一个简单的问题:如何使用CodeIgniter的ActiveRecord 函数?我要这个: 但是,如果使用,则该值将介于反引号之间。 我怎样才能做到这一点? 更新 我想要的是?如果为1,那么我想要,而当 为5时,我想要。 完整的SQL查询: 问题答案: 只有一个简单的解决方法,丑陋,不够优雅,但是在这种情况下它可以工作: 如果有人知道更好,请显示出来!

  • 在我删除索引之后。php,我在codeigniter中启用查询字符串。但我有一些重定向链接的问题。详细信息,我有登录表单(登录/索引),登录成功时重定向到“欢迎/索引”,并在会话中保存电子邮件。 但是登录成功时只加载视图的"欢迎/索引"和错误的链接,现在链接是:"?登录/索引"并且会话不保存。请帮帮我。 这是我的密码 登录。php(控制器) Welcome.php(控制器) 欢迎留言。php(视图

  • 我有一个这样的SQL问题 根据用户输入,我想将botcode='r1'更改为给定输入。在不重新启动作业的情况下说出botcode='r10'。有没有办法做到这一点。我在flink 1.7上使用stream env。我尝试配置流来读取输入。但仍停留在如何动态更改查询上。有人能帮我吗?提前谢谢

  • 我试图从动态表中选择对象,但当我运行我的代码时,我得到了一些错误...有一种方法可以做到这一点...我用的是JPAHibernate和后遗症 这里是错误。。。 org.springframework.dao.InvalidDataAccessResourceUsageExc0019,"dedegMessage":"org.springframework.dao.InvalidDataAccessR

  • 问题内容: 我正在寻找一种使用Spring Data JPA动态构建查询的解决方案。我有一个GameController,它有一个RESTful服务终结点/ games,它带有4个可选参数:体裁,平台,年份,标题。可能不传递任何API,而是传递所有4种,以及之间的每种组合。如果未传递任何参数,则默认为null。我需要在存储库中使用一种方法来构建适当的查询,并且理想情况下还允许Spring Data