使用FIND_IN_SET选择记录

时间:2012-07-10 04:32:51

标签: mysql select

我将复选框值存储为db中的逗号分隔值,如

Features

1,3,4

1,2,3,4,5

3,4,5,6

现在在搜索时我需要根据用户选择记录选择复选框,例如,如果用户选择1 and 6需要获取匹配记录。我将选中的复选框值作为(0=>1,1=>6)之类的数组。我不知道如何像FIND_IN_SET(1,Features) OR FIND_IN_SET(6,Features)

那样循环使用

它必须像

SELECT * FROM table WHERE FIND_IN_SET(1,Features) OR FIND_IN_SET(6,Features)

2 个答案:

答案 0 :(得分:1)

$str='%';
foreach($array as $val)
{$str.=$val.'%';}

SELECT * FROM table WHERE Features like $str

更新

$str='';
    foreach($array as $val)
    {$str.='or Feature like %'.$val.'%';}
$str[0]='';$str[1]='';

    SELECT * FROM table WHERE $str

答案 1 :(得分:0)

我修复了使用以下代码来获取此SELECT * FROM table WHERE FIND_IN_SET(1,Features) OR FIND_IN_SET(6,Features)

之类的查询
if($selCount >1){
    foreach($luxPropFeatures as $val) {
      $str .="OR FIND_IN_SET('".$val."',LP.luxury_property_feature_id) ";
      $trimmed = ltrim($str, "OR"); 
      //$str[0]='';$str[2]='';
     }
}else{

    foreach($luxPropFeatures as $val) {
        $trimmed = "FIND_IN_SET('".$val."',LP.luxury_property_feature_id) ";
    }

}