[英]SQL LIKE operator in codeigniter
如果有这个表
USER TABLE
ID | name | mode
1 | foo | private
PRIVATE TABLE
private_id | id | private_name
1 | 1 | private mode
PUBLIC TABLE
public_id | id | public_name
1 | 1 | public mode
我想返回查询,具体取决于学校中的哪些数据,例如,如果USER TABLE
的COLUMN MODE
的数据是private
我希望它仅在PRIVATE TABLE
搜索,并且如果它的public
只返回PUBLIC TABLE
的数据
这是我的代码
if($search){
$search_str = '(user.name LIKE '%{$search}%'
OR private.private_name LIKE '%{$search}%'
OR public.public_name LIKE '%{search}%'
)';
$this->db->where($search_str,NULL,FALSE);
$this->db->join("private","private.id = user.id","LEFT");
$this->db->join("public","public.id = user.id","LEFT");
}
如果我的关键字是搜索框中的mode
,则返回private mode
和public mode
$search_str = '(user.name LIKE '%{$search}%'
OR (private.private_name LIKE '%{$search}%' AND user.mode = 'private')
OR (public.public_name LIKE '%{search}%' AND user.mode = 'public')
)';
在此行OR (private.private_name LIKE '%{$search}%' AND user.mode = 'private')
,它将检查USER TABLE
MODE COLUMN
中的数据是否等于private
,然后进入PRIVATE TABLE
查找PRIVATE NAME COLUMN
keyword
的指定模式。
在这行OR (public.public_name LIKE '%{$search}%' AND user.mode = 'public')
,它将检查USER TABLE
MODE COLUMN
中的数据是否等于public
,然后进行PUBLIC TABLE
以在PUBLIC NAME COLUMN
找到keyword
的指定模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.