mysql 动态查询条件

我想写的是一个查询语句,根据不同的条件查询。就是有些网页中的那种高级查询。选择多个条件之后点击查询,系统会按着自己选择的条件进行查询。比如,条件有:姓名,年龄,性别。我三项都选择了,那么就会根据我的姓名,年龄,性别进行查询,如果我只选择了姓名,性别,那么就会根据我的姓名和性别查询,即使没选择年龄也不会出什么问题。我想这到这样的数据库语句怎么写。
我想知道能不能用一条数据库语句,不用If之类的判断。一楼的那个我觉得还是不行。因为和我写的
select * from user where name='".$_POST[name]."' and age='".$_POST[age]."' and sex='".$_POST[sex]."';没什么区别,当条件中无论是姓名,性别还是年龄为空的时候,搜索的都会出问题。因为“空”也是个条件,系统会按着“空”来搜索,一样会搜不到。

$sql = "SELECT * FROM user WHERE name LIKE '%".$name."%' AND age LIKE '%".$age."%' AND sex LIKE '%".$sex."%' ORDER BY id ASC

仔细看看吧 相信你能看懂的。
-----------------------------------------------------------
楼主..模糊查询的条件为空的时候是完全匹配的。
$sql = "SELECT * FROM user WHERE name LIKE '%%' AND age LIKE '%%' AND sex LIKE '%%' ORDER BY id ASC
下面这样子才是空值 搜不到任何东西的。
$sql = "SELECT * FROM user WHERE name LIKE '% %' AND age LIKE '% %' AND sex LIKE '% %' ORDER BY id ASC
你再仔细看看 区别 多试试...我用这么久还没见过他不好使呢。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-09
为什么要排拆IF呢?下面这样能达到你的要求么?
$where_clause ="";
if(!empty($_POST['name'])) $where_clause .= " and name like '%".$_POST['name']."%'";
if(!empty($_POST['age'])) $where_clause .= " and name like '%".$_POST['age']."%'";
if(!empty($_POST['sex'])) $where_clause .= " and name like '%".$_POST['sex']."%'";
$sql = "select * from user where 1=1 ".$where_clause;
以上语句是在记事本里写的,未做语法检查.另外你可以不用like,而用=
第2个回答  2010-04-06
用if语句判断如果年龄不为空就在查询语句中设置and age=。。以此类推
if
else if
else if
else
相似回答