0

我有一个搜索功能,可以从 db 表中按不同的条件进行搜索。这是带有一些数据的表格字段

id first_name last_name Province_id
1 阿里阿里 2,12
2 艾哈迈德艾哈迈迪 22,1,4

一个人可以在不同的省份,并且它保存在以“,”分隔的表格中,在省字段中,我知道它没有标准化。我使用跟随功能进行搜索

$WHERE_ARR = array();
    if(trim($first_name)!=""){
        $WHERE_ARR['first_name']        = " p.first_name like '%".$first_name."%' ";
    }
    if(trim($last_name)!=""){
        $WHERE_ARR['last_name']     = " p.last_name like '%".$last_name."%' ";
    }

    if(trim($province)!=""){
        $WHERE_ARR['province'] = " p.province_id = ".$province." ";
    }     
    $WHERE_STR  =   implode(' AND ', $WHERE_ARR);
    $WHERE_STR  =   (trim($WHERE_STR)!="")?" AND " . $WHERE_STR:'';

    $QUERY  =   "
                SELECT p.*,pr.province
                FROM ndi_participants p,ndi_provinces pr
                WHERE pr.province_id = p.province_id
                ". $WHERE_STR . " 
                ORDER BY pr.province ASC
                LIMIT ".$start.", " . $perpage . "
                ";
    return $this->db->query($QUERY);

当我按省字段搜索时,肯定不准确。当它是用“,”分隔的多值时,我如何按省字段搜索
注意:我正在使用codeigniter

谢谢你的帮助

4

1 回答 1

1

尝试FIND_IN_SETmysql函数在provience_id中搜索

if(trim($province)!=""){
        $WHERE_ARR['province'] = " p.province_id = FIND_IN_SET(".$province.",p.province_id)";
    }
于 2013-04-22T11:28:36.367 回答