PHP 로 포 장 된 데이터베이스 모델 Model 클래스 의 전체 예제[PDO 기반]

이 사례 는 PHP 로 포 장 된 데이터베이스 모델 모델 류 를 다 루 었 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.

<?php
    //      
    include "../Config/config.php";
    class Model extends PDO
    {
        protected $tableName = "";//    
        protected $sql = "";//       SQL  
        protected $limit = "";//  limit  
        protected $order = "";//  order    
        protected $field = "*";//        
        protected $where = "";//  where  
        protected $allFields = [];//          
        /**
         *         
         * @param string $tableName       
         */
        public function __construct($tableName)
        {
            //     
            parent::__construct('mysql:host='.HOST.';dbname='.DB.';charset=utf8;port='.PORT,USER,PWD);
            //    
            $this->tableName = PRE.$tableName;
            //             
            $this->getFields();
        }
        /**
         *           
     * @return array            
         */
        public function getFields()
        {
            //       
            $sql = "desc {$this->tableName}";
            $res = $this->query($sql);//  pdo  
          //var_dump($res);
            if ($res) {
                $arr = $res->fetchAll(2);
                //var_dump($arr);
                //              
                $this->allFields =    array_column($arr,"Field");
                return $this->allFields;
            } else {
                die("    ");
            }
        }
        /**
         *     
         * @param array $data       
         * @return int        
         */
        public function add($data)
        {
            //       
            if (!is_array($data)) {
                    return $this;
            }
            //          
            if (empty($data)) {
                    die("    ");
            }
            //      
            foreach($data as $k => $v){
                if (!in_array($k,$this->allFields)) {
                    unset($data[$k]);
                }
            }
            //        
            $keys = array_keys($data);
            //               
            $key = implode(",",$keys);
            //              
            $value = implode("','",$data);
            //  SQL  
            $sql = "insert into {$this->tableName} ({$key}) values('{$value}')";
            $this->sql = $sql;
            //     SQL,       
            return (int)$this->exec($sql);
        }
        /**
         *     
         * @param string $id     id
         * @return int        
         */
        public function delete($id="")
        {
            //  id    
            if (empty($id)) {
                $where = $this->where;
            }else{
                $where = "where id={$id}";
            }
            $sql = "delete from {$this->tableName} {$where}";
      $this->sql = $sql;
            //     SQL,       
            return (int)$this->exec($sql);
        }
    /**
     *     
     * @param array $data       
     * @return int        
     */
    public function update($data)
    {
      //       
      if (!is_array($data)){
        return $this;
      }
      //          
      if (empty($data)) {
        die('      ');
      }
      $str = "";
      //      
      foreach ($data as $k=>$v) {
        //   id ,  id     
        if ($k == "id"){
          $this->where = "where id={$v}";
          unset($data[$k]);
          continue;
        }
        //     id,        set  
        if (in_array($k, $this->allFields)) {
          $str .= "{$k}='{$v}',";
        } else {
          unset($data[$k]);
        }
      }
      //        
      if (empty($this->where)) {
        die('       ');
      }
      //     ,
      $str = rtrim($str, ',');
      $sql = "update {$this->tableName} set {$str} {$this->where}";
      //echo $sql;
      $this->sql = $sql;
      return (int)$this->exec($sql);
    }
    /**
     *       
     * @return array         ,       
     */
        public function select()
    {
          $sql = "select {$this->field} from {$this->tableName} {$this->where} {$this->order} {$this->limit}";
      $this->sql = $sql;
      //  SQL,        
          $res = $this->query($sql);
          //        ,
      if ($res){
        //        
        return $res->fetchAll(2);
      }
      //       
      return [];
    }
    /**
     *       
     * @param string $id     id
     * @return array       
     */
    public function find($id="")
    {
      //      id
      if (empty($id)){
        $where = $this->where;
      }else{
        $where = "where id={$id}";
      }
          $sql = "select {$this->field} from {$this->tableName} {$where} {$this->order} limit 1";
      $this->sql = $sql;
      //  sql,      
      $res = $this->query($sql);
      //        
      if ($res){
        //         (    )
        $result = $res->fetchAll(2);
        return $result[0];
      }
      //       
      return [];
    }
    /**
     *      
     * @return int     
     */
    public function count()
    {
      $sql = "select count(*) as total from {$this->tableName} {$this->where} limit 1";
      $this->sql = $sql;
      //  SQL,      
      $res = $this->query($sql);
      //     
      if ($res){
       $result = $res->fetchAll(2);
       //var_dump($result);
        return $result[0]["total"];
      }
      return 0;
    }
    /**
     *           
     * @param string $field       
     * @return object     ,      
     */
    public function field($field)
    {
      //        
      if (empty($filed)){
        return $this;
      }
      $this->field = $field;
      return $this;
    }
    /**
     *        sql  
     * @return string sql  
     */
    public function _sql()
    {
      return $this->sql;
    }
    /**
     * where  
     * @param string $where     where  
     * @return object     ,      
     */
    public function where($where)
    {
      $this->where = "where ".$where;
      return $this;
    }
    /**
     * order  
     * @param string $order     order  
     * @return object     ,      
     */
    public function order($order)
    {
      $this->order = "order by ".$order;
      return $this;
    }
    /**
     * limit  
     * @param string $limit     limit  
     * @return object     ,      
     */
    public function limit($limit)
    {
      $this->limit = "limit ".$limit;
      return $this;
    }
}

더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기