我有一个搜索功能,可以按照db表中的不同条件进行搜索。 这是表'带有一些数据的字段
id first_name last_name province_id 1 ali alii 2,12 2 ahmad ahmadi 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
感谢您的帮助
答案 0 :(得分:1)
尝试使用FIND_IN_SET
mysql函数在provience_id中搜索
if(trim($province)!=""){
$WHERE_ARR['province'] = " p.province_id = FIND_IN_SET(".$province.",p.province_id)";
}