繁体   English   中英

Codeigniter中的SQL LIKE运算符

[英]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 TABLECOLUMN 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 modepublic 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM