要求列出满足type中对应的数据
SELECT type,titile from books where type in($str);例如
$str = "12,33,48"; //来自多选项的一组结果,每个数字表示对应的类型第1条type =1,10,12,13,33,44,48 (满足条件,包含了$str 中的12,33,48)
第2条type =2,22,12,13          (满足条件,包含了$str 中的12) 
第3条type =1,2,3               (不满足条件,不包含任何$str 中的12,33,48)
第4条type =1,2,33              (满足条件,包含了$str 中的33)搜索结果:第1条、第2条
而正确搜索结果应该:第1条、第2条、第4条
为什么?有其它更好的比较函数替代吗?

解决方案 »

  1.   

    SQL语句的IN($str)只能是找到$str他里的所有记录
    比如,id in("1,2,3")那就是ID=1或者=2或者=3
      

  2.   

    你现在要进行字符串操作请使用对应的字符串函数,详细查查文档in 不是函数,是一个条件操作,作用是筛选附合包含在一个集合中的元素。in 后面括号跟的不是函数参数,是代表一个集合。
      

  3.   

    楼主可以在PHP脚本里面将所str变量分割成数组循环数组,在sql中用like得到列表
    $arr = split(',',$str);$sql="SELECT type,titile from books where";
    foreach ($arr as $a){
    $sql .= " type like ('%$a%') or";
    }echo substr($sql,0,$sql.length-2);