做一个站内搜索程序,只查询产品表,按两项数据进行索引,fs与jf,要求可以输入两个数据精准查询,也可以只输入一个模糊查询,当然不能一个都不输。
搜索表单如下:    <form name="searchform" action="" method="get">
        fs: <input type="text" name="fs" />
        jf: <input type="text" name="jf" />
        <input type="submit" name="submit" value="Search">
    </form>
看某篇文章有使用以下方法,不过与我的需求并不相同,于是仿制如下:
//以上一些是判断是否已输入值,
//将$_GET['fs']赋给$fs了
//`fs`是表的字段名
$sql = "select * from pro where ";
$q = array();
$q[] = $fs <> ''?"`fs` LIKE '%{$fs}%'":'';
$q[] = $jf <> ''?"`jf` LIKE '%{$jf}%'":'';$q = array_filter($q, "removeEmpty");
//这里是一个为空则去掉q的判断函数//接下来是关键。深感迷茫~
//如何用三元来决定使用and还是使用or来连接SQL语句?
$andOr = $fs <> '' && $jf <> ''?'AND':'OR';
//意思是只输入一个值时用or,同时两项都输入就使用and
$SQL .= implode(" {$andOr} ", $q) . " ORDER BY `id`";
$res = mysql_query($sql);//以上SQL语句
//后面代码检索结果
请CSDN高人解决 andOr 怎么使用

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2010-09-13 15:48:33 编辑
      

  2.   


    借楼上$andOr = $fs <> '' && $jf <> ''  ? join(' and ', $q) :  join(' OR  ' ,$q) ;
      

  3.   

    ihefe  的写法比较让人容易接受
      

  4.   

    搞不定
    首先在逻辑方面应该是没问题的
    而且在mysql command line中执行以上代码所期望的SQL语句,能正常查询得到结果
    但在php页面中查询是空白
    这句 $andOr 还没成功
      

  5.   

    Notice: There was an error.
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`fs` LIKE '%400%'AND`jf` LIKE '%9%' `jf` LIKE '%9%' order by id ASC' at line 1
    SQL Was: select * from pro where `fs` LIKE '%400%' `fs` LIKE '%400%'AND`jf` LIKE '%9%' `jf` LIKE '%9%' order by id ASC in F:\website\search\search.php on line 41Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in F:\website\search\search.php on line 42不知是不是因为我查询了一个数据表中没有的数据,然后居然出了这个错误提示
    原来是 LIKE 出现了两次