假设数据库中有一学生表(Student)字段结构为SNO(学号)、Name(姓名)、Sex(性别)、Age(年龄),请设计一段SQL程序,让用户输入其中的任意的N个条件(N>=0,N<=4),根据用户的输入找出与之相匹配的记录。(不需要设计用户输入界面,假设用户的输入已存放在四个参数中)(提示:假如用户没有输入任何条件,则就找出表中的所有记录;假如用户输入了姓名为“张三”,性别为“男”,则应找出所有Name=“张三”且Sex = “男”的记录,
调试欢乐多
就是N个IF THEN END IF
判断参数是否为NULL,不则累加字符串,得到 WHERE中的条件,可以动手做一下,
不难。
public function query($condition){
String sql = "select * from student where 1=1 ";
if(isset($condition['sno'])) sql = sql."and sno='".$condition['sno']."' ";
if(isset($condition['name'])) sql = sql."and name='".$condition['name']."' ";
if(isset($condition['sex'])) sql = sql."and sex='".$condition['sex']."' ";
if(isset($condition['age'])) sql = sql."and age='".$condition['age']."' ";
return mysql_query($sql);
}
function sql($data=array()){
$sql = array();
foreach($data as $k=>$v){
$sql[] = "{$k}='{$v}'";
}unset($data,$k,$v);
return 'select * from Student' . ( $sql ? ' Where' . join(' And ',$sql) : '' );
}
echo sql( array('SNO'=>'1','Name'=>'姓名','Age'=>'5') );
echo sql( array('Sex'=>'男') );