2012年9月5日星期三

多条件查询用到的SQL

    在做Web开发的时候,经常会遇到这样的情形。那就是多条件查询。对很多PHP初学者都感到很棘手。

    举个简单例子来说,我们有个user的用户表。用户可以在界面上输入姓名、性别、年龄来搜索用户信息。

id name sex age
1 小林 18
2 小亮 17

    我们在后台该怎么处理呢?


<?php
$name = $_POST['name'];
$sex = $_POST['sex'];
$age = $_POST['age'];
$sql = $name ? "SET @name = '$name'":"SET @name = NULL";
mysql_query($sql);
$sql = $sex ? "SET @sex = '$sex'":"SET @sex = NULL";
mysql_query($sql);
$sql = $age ? "SET @age = '$age'":"SET @age = NULL";
$sql = "SELECT * FROM user WHERE `name`=(CASE WHEN @name IS NULL THEN name ELSE @name END) 
AND `sex`=(CASE WHEN @sex IS NULL THEN sex ELSE @sex END) AND 
`age`=(CASE WHEN @age IS NULL THEN age ELSE @age END)";
$result = mysql_query($sql);
while($item = mysql_fetch_array($result)) {
//……
}
?>  

   是不是很简单呢?SQL的case语句是处理多查询的极好方法。

没有评论:

发表评论