Php Codeigniter使用或类似搜索文本值的列
我试图使用codeigniter并使用活动记录Php Codeigniter使用或类似搜索文本值的列,php,mysql,codeigniter,Php,Mysql,Codeigniter,我试图使用codeigniter并使用活动记录或类似的搜索mysql数据库,因此我的数据库如下所示 +----+---------------------+ | id | search_column | +----+---------------------+ | 1 | dog,cat,mouse,horse | | 2 | pig,lion,tiger | | 3 | eagle | +----+--------------------
或类似的搜索mysql
数据库,因此我的数据库如下所示
+----+---------------------+
| id | search_column |
+----+---------------------+
| 1 | dog,cat,mouse,horse |
| 2 | pig,lion,tiger |
| 3 | eagle |
+----+---------------------+
因此,我的第一种方法是使用where_in
,因为我的输入来自一个复选框组并返回一个数组值,然后我将其存储到一个变量$term=array('cat','dog','lion')
$this->db->where_in('search_column',$term)代码>
但上面的方法不起作用,所以我尝试了下面的方法
foreach($term as $row){
$this->db->or_like('search_column', $row);
}
而且也没有运气,因此目标输出必须基于字符串数组显示结果。任何建议都很好。如果没有其他查询条件,可以先尝试一个不等条件
$this->db->where('0=1');
foreach($term as $row){
$this->db->or_like('search_column', $row);
}
要从给定集合中查找值,可以使用
注意:这种类型的设计被认为是糟糕的设计,你应该规范你的结构,我建议你看看
改进
创建一个动物表和一个连接表,以将主表和动物关联起来
动物
id name
1 cat
2 dog
3 lion
连接表
tid(main table pk) animal_id (animal table pk)
1 1
1 2
1 3
从主表中删除search\u列
,这样您就不会有任何冗余数据,搜索和优化会更容易
tid(main table pk) animal_id (animal table pk)
1 1
1 2
1 3