php面向对象之单表操作类
admin
2023-07-03 18:04:27
0次
tablename = $tablename;
        // 数据库连接
        $this->link=@mysql_connect(HOST,USER,PASS) or die('数据库连接失败!');
        mysql_set_charset("utf8");
        mysql_select_db(DBNAME,$this->link);
        //获取当前表的结构和主键名
        $this->getFields();
          
    }
      
    //私有方法,加载当前表中的所有字段信息
    private function getFields(){
        $sql = "desc {$this->tablename}";
        $result = mysql_query($sql,$this->link);
        //解析表结构信息
        while($row = mysql_fetch_assoc($result)){
            $this->fields[]=$row['Field']; //获取字段名
            //判断并获取主键名
            if($row['Key']=="PRI"){
                $this->pk = $row['Field'];
            }
        }
        mysql_free_result($result);
    }
      
     //封装各种条件或获取所有对应数据信息
    public function select()
    {
      $list = array();
      //拼装sql语句
      $sql ="select * from {$this->tablename}";
        
      //判断并封装where条件
      if(count($this->where)>0){
        $sql.=" where ".implode(" and ",$this->where);
      }
        
      //判断并封装order排序条件
      if($this->order){
        $sql.=" order by ".$this->order;
      }
        
      //判断并封装分页条件
      if($this->limit){
        $sql.=" limit ".$this->limit;
      }
      //执行查询,获取数据。
      $result = mysql_query($sql,$this->link);
      echo $sql;
      //解析结果集
      while($row = mysql_fetch_assoc($result)){
        $list[]=$row;
      }
      mysql_free_result($result); //释放结果集
      return $list;
    }
      
    //获取封装条件的总数据条数
    public function total()
    {
      $list = array();
      //拼装sql语句
      $sql ="select count(*) from {$this->tablename}";
        
      //判断并封装where条件
      if(count($this->where)>0){
        $sql.=" where ".implode(" and ",$this->where);
      }
       
      //执行查询,获取数据。
      $result = mysql_query($sql,$this->link);
        
      return mysql_result($result,0,0);
    }
      
    //获取所有数据
    public function findAll()
    { $list = array();
      //拼装sql语句
      $sql ="select * from {$this->tablename}";
      //执行查询,获取数据。
      $result = mysql_query($sql,$this->link);
      //解析结果集
      while($row = mysql_fetch_assoc($result)){
        $list[]=$row;
      }
      mysql_free_result($result); //释放结果集
      return $list;
    }
      
    /**
     * 获取指定id号的单条数据信息
     * @param int id 获取信息的主键id值。
     * @return array 返回值,找到数据则返回数组,否则返回null
     */
    public function find($id)
    {
        $sql = "select * from {$this->tablename} where {$this->pk}={$id}";
        //执行查询
        $result = mysql_query($sql,$this->link);
        //判断是有信息
        if($result && mysql_num_rows($result)>0){
            return mysql_fetch_assoc($result);
        }else{
            return null;
        }
    }
      
    //执行删除
    public function delete($id)
    {
        $sql = "delete from {$this->tablename} where {$this->pk}={$id}";
        //执行删除
        mysql_query($sql,$this->link);
          
        //返回影响行数
        return mysql_affected_rows($this->link);
    }
      
    //执行信息添加
    public function insert($data=array()){
        //判断参数是否有值,若没有则尝试从post自己获取
        if(empty($data)){
            $data = $_POST;
        }
        //过滤所有字段
        $fieldlist = array();
        $valuelist = array();
        foreach($data as $k=>$v){
            //判断是否是有效字段
            if(in_array($k,$this->fields)){
                $fieldlist[] = $k;
                $valuelist[] = $v;
            }
        }
        //拼装sql语句
        $sql = "insert into {$this->tablename}(".implode(",",$fieldlist).") values('".implode("','",$valuelist)."')";
        echo $sql;
        //执行添加
        mysql_query($sql,$this->link);
          
        //返回自增信息
        return mysql_insert_id($this->link);
    }
      
    //执行信息修改
    public function update($data=array()){
        //判断参数是否有值,若没有则尝试从post自己获取
        if(empty($data)){
            $data = $_POST;
        }
        //过滤所有字段
        $fieldlist = array();
        foreach($data as $k=>$v){
            //判断是否是有效字段
            if(in_array($k,$this->fields) && $k!=$this->pk){
                $fieldlist[] = "{$k}='{$v}'";
            }
        }
        //拼装sql语句
        $sql = "update {$this->tablename} set ".implode(",",$fieldlist)." where {$this->pk}=".$_POST[$this->pk];
        echo $sql;
        //执行添加
        mysql_query($sql,$this->link);
          
        //返回自增信息
        return mysql_insert_id($this->link);
    }
      
   //封装搜索条件方法
   public function where($data)
   {
        $this->where[]=$data;
        return $this;
   }
   //封装排序方法
   public function order($data)
   {
        $this->order=$data;
        return $this;
   }
   //封装分页方法
   public function limit($m,$n=0)
   {
        if($n>0){
            $this->limit = $m.",".$n;
        }else{
            $this->limit = $m;
        }
        return $this;
   }
}


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...