多关键词的查询在php的网站项目内是很常见的功能. 比如产品中心需要同时搜索产品名称,产品编号,产品颜色等等.
寻常的查询sql语句是 $sql = \"select * from 表名 where 字段=关键词1 and 字段2=关键词2....\"以此类推的写下去. 这时我们需要考虑很多种情况,即当搜索条件为空, 搜索条件为一个或者多个时的sql拼接问题. 可采用如下方法
$whr = \"\"; //定义并且初始化条件拼接变量
if(关键词1 <>\"\"){
$whr .= \" and 字段1=\'\".$关键关键词1.\"\'\"
}
if(关键词2 <>\"\"){
$whr .= \" and 字段2 = \'\".$关键关键词2.\"\'\"
}
以此类推,这样可以理论上拼接无限个组合搜索.
同时对sql进行改写
$sql = \"select * from 表名 where id>0 \".$whr.\" order by 排序字段 limit 数量\";
这样即可满足讨论的全部情况 .