codeigniter - 使用关联数组的多个 LIKE db 查询 - 但都来自相同的列名......?

标签 codeigniter foreach chained

我正在尝试使用 CodeIgniter 的事件记录类查询我的数据库。我有许多博客文章存储在一个表中。该查询用于搜索功能,该功能将提取所有分配有特定类别的帖子。因此,表格的“类别”列将列出该帖子的所有类别,不按特定顺序排列,用逗号分隔,例如:政治、历史、社会学。等等

如果用户选择政治和历史,则应返回同时具有这两个类别的所有帖子的标题。

因此,查询的类别列表将是数组 $cats。我认为这会起作用-

foreach ($cats as $cat){
    $this->db->like('categories',$cat);
}

通过生产:

$this->db->like ('categories','Politics');
$this->db->like ('categories','History');

(这将产生-'WHERE categories LIKE '%Politics%' AND categories LIKE '%History%')

但它不起作用,它似乎只产生第一个语句。我猜的问题是每个链接查询的列名都是相同的。 CI 用户指南中似乎没有任何关于此 (http://codeigniter.com/user_guide/database/active_record.html) 的内容,因为他们似乎假设每个链接语句将用于不同的列名。

当然,不可能在一个语句中使用关联数组,因为它必须包含重复的键——在这种情况下,每个键都必须是“类别”...

最佳答案

关于 MySQL,我只是在我的数据库上运行了以下查询,没有任何问题。

 SELECT * 
 FROM  `TicketUpdates` 
 WHERE content LIKE  '%update%'
 AND content LIKE  '%footprints%';

同样,以下代码按预期运行:

 $this->db->select('*'); 
 $this->db->from('TicketUpdates');
 $this->db->like('content', 'update');   
 $this->db->like('content', 'footprints');       
 print_r($this->db->get()->result());

如果您在 CI 中使用 'like' 函数,则必须使用适当的查询函数为它们添加前缀和后缀,例如:

 $this->db->select('*');
 $this->db->from('tablename');
 foreach($cats as $cat){
    $this->db->like('categories', $cat);
 }
 $result = $this->db->get();

关于codeigniter - 使用关联数组的多个 LIKE db 查询 - 但都来自相同的列名......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713913/

相关文章:

javascript - D3.js 链式过渡,用于不同形状的复合动画

javascript - 填充链式选择菜单

php - 使用 codeigniter 将字符串日期时间插入到 mysql 数据库中

java - 如何使用 lambda 和流避免此映射的嵌套循环

r - 外循环的并行化在 REvolution 中有效,但在普通 R 中无效

使用 foreach 创建的 HTML 选项卡

comparison-operators - Julia 链式比较中的优先级, "var1 && var2 != 1"是否意味着 "(var1 and var2) != 1"?

CodeIgniter:如何将我自己的静态函数类加载到 Controller 中?

javascript - 如何使用jquery ajax post方法[Codeigniter]将textarea数据保存到 session ?

php - 是否有用于 Codeigniter 的 AJAX 库