你的SQL动态生成就行啦,例如:$sql="select * from tablename where 1 and";if ($condition1!="")
$sql.=" field1='$condition1'";if ($condition2!="")
$sql.=" field2='$condition2'";.....
$sql.=" field1='$condition1'";if ($condition2!="")
$sql.=" field2='$condition2'";.....
$sqlstr="SELECT * FROM soft WHERE 1";
if($class&&$class!='all') $sqlstr=$sqlstr." AND class='$class'";
if($os&&$os!='all') $sqlstr=$sqlstr." AND os='$os'";
if($type&&$type!='all') $sqlstr=$sqlstr." AND type='$type'";
if($uploaduser!='') $sqlstr=$sqlstr." AND username='$uploaduser'";
if($keyword!='') $sqlstr=$sqlstr." AND title LIKE '%$keyword%' OR softname LIKE '%$keyword%' OR brief LIKE '%$keyword%'";
$sqlstr=$sqlstr." ORDER by storetime DESC,score DESC,softid DESC";
如果没有condition,这个表达式的值恒为1,返回所有的记录。如果把1换成1>0 之类的也是可以的
如果你设定了条件,1 and condition的值就随condition变化,即condition为真的时候1 and condition才为真,满足这样条件的记录才会返回。
如果只写成$sql="select * from tablename where ".$condition;那么没有$condition字符串的时候(即条件为空),语法就错了。
$sql="select * from tablename where 1 and";if ($condition1!="")
$sql.=" field1='$condition1 and'";if ($condition2!="")
$sql.=" field2='$condition2 and'";
.......$sql.=" 1";