0
我有一個搜索功能,可以通過數據庫表中的不同條件進行搜索。 這裏是一些數據帶有多字段字段的mysql預先搜索查詢
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);
肯定 我用隨後的功能是不準確的,當我通過省現場搜索。 我如何通過省現場搜索時,它是多值通過分離「」
注:我用笨
感謝您的幫助
Find_in_set是MySQL的功能,所以需要不帶引號。 '「p.province_id = FIND_IN_SET(」。$ province。「,p.province_id)」;' – Narek 2013-04-22 11:32:02
@narek:我同意。更新的答案。謝謝 – 2013-04-22 11:34:00
需要注意的一個重要的事情是,FIND_IN_SET將返回當前字符串的索引,例如,SELECT FIND_IN_SET('1','4,3,7,21,1');將返回5而不是1.所以你應該改變查詢來檢查函數返回值應該大於'0'而不是等於你想檢查的值。 – Vijay 2013-04-22 11:37:43