假设数据库中有一学生表(Student)字段结构为SNO(学号)、Name(姓名)、Sex(性别)、Age(年龄),请设计一段SQL程序,让用户输入其中的任意的N个条件(N>=0,N<=4),根据用户的输入找出与之相匹配的记录。(不需要设计用户输入界面,假设用户的输入已存放在四个参数中)(提示:假如用户没有输入任何条件,则就找出表中的所有记录;假如用户输入了姓名为“张三”,性别为“男”,则应找出所有Name=“张三”且Sex = “男”的记录,

解决方案 »

  1.   

    你做到哪一步了?
    就是N个IF THEN  END IF 
    判断参数是否为NULL,不则累加字符串,得到 WHERE中的条件,可以动手做一下, 
    不难。
      

  2.   


    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);
    }
      

  3.   


    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'=>'男') );