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


相关内容

热门资讯

花费半生积蓄,农村自建房热背后 今年以来,在安徽安庆望江县做外墙漆生意的徐仙琴越来越忙碌了,她和员工们每天奔波在县城的各个村庄里,找...
黎以冲突再升级对中东地区影响几... 从当前的局势来看,黎以双方博弈已陷入谈判停滞、战火升级的恶性循环,地区冲突风险持续走高。根据以军发布...
易事达取得载带冷却定型装置专利... 国家知识产权局信息显示,浙江易事达电子材料有限公司取得一项名为“一种载带冷却定型装置”的专利,授权公...
深度推荐:2026年五大精选手... 本文全面梳理2026年手机电池批发市场主流品牌,聚焦续航升级与库存优化两大核心需求。通过对五大头部品...
法国外长要求安理会就以色列在黎... △法国外长巴罗(资料图)当地时间5月31日,法国外长巴罗宣布,他已要求召开一次联合国安全理事会紧急会...
大数据赋能矿山安全 科技先锋刘... 在煤炭产业高质量发展与智慧矿山建设加速推进的背景下,矿山安全监管正从传统人工巡查向数字化、智能化、预...
解压玩具“娜塔莎”引争议,它的... 最近,一款名为“娜塔莎”的婴儿造型“捏捏乐”解压玩具在网络上和校园里悄然流行,商家宣称其可以用来缓解...
坚持“四个面向” 矢志科技报国... 5月30日,第十个全国科技工作者日如期而至。日前,中央宣传部、中国科协向全社会发布“最美科技工作者”...
显微镜的“能源革命” ——无液... 我国自主研制闭循环光耦合SPM系统,为量子科技前沿研究提供可持续的“中国方案”。 导读 Part ...
五部门开展“百场万企”大中小企... 记者从工业和信息化部获悉,工业和信息化部、国家发展改革委、国务院国资委等五部门联合印发通知,组织开展...