做一个站内搜索程序,只查询产品表,按两项数据进行索引,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 怎么使用
搜索表单如下: <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 怎么使用
借楼上$andOr = $fs <> '' && $jf <> '' ? join(' and ', $q) : join(' OR ' ,$q) ;
首先在逻辑方面应该是没问题的
而且在mysql command line中执行以上代码所期望的SQL语句,能正常查询得到结果
但在php页面中查询是空白
这句 $andOr 还没成功
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 出现了两次