PDO 작업 데이터베이스 캡슐화

1. PDO 작업 데이터베이스를 캡슐화하기 위해 MysqlPdo.class.php 파일을 생성합니다.

구체적인 코드는 다음과 같습니다.

<?php
class MysqlPdo{
    private $dbConfig=array(
        'db'=>'mysql',
        'host'=>'localhost',
        'port'=>'3306',
        'user'=>'root',
        'pwd'=>'',
        'charset'=>'utf8',
        'dbname'=>''
    );
    private static $instance;  //单例模式
    private $db;   //PDO实例
    private $data=array(); //操作数据
    private function __construct($params)
    {
        $this->dbConfig=array_merge($this->dbConfig,$params);
        $this->connect();
    }
    //连接服务器
    private function connect(){
        //mysql:host=localhost
        //mysql:host:localhost;port=3306;dbname=php;charset=utf-8
        $dsn="{$this->dbConfig['db']}:host={$this->dbConfig['host']};port={$this->dbConfig['port']};dbname={$this->dbConfig['dbname']};charset={$this->dbConfig['charset']}}";
        try{
            //实例化PDO
            $this->db=new PDO($dsn,$this->dbConfig['user'],$this->dbConfig['pwd']);
        }catch (PDOException $exception){
            die("数据库连接失败");
        }
    }
    public static function getInstance($params=array()){
        if(!self::$instance instanceof self){
            self::$instance=new self($params);
        }
        return self::$instance; //返回对象
    }
    //私有化克隆,防止外部调用clone $对象 生成新的对象,因为是单例模式
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }
    //通过预处理方式执行sql
    public function query($sql,$batch=false){
        $data=$batch?$this->data:array($this->data);
        $this->data=array();
        //通过预处理方式执行SQL
        $stmt=$this->db->prepare($sql);
        foreach($data as $v){
            if($stmt->execute($v)===false){
                die("数据库PDO预处理操作失败");
            }
        }
        return $stmt;
    }
    public function data($data){
        $this->data=$data;
        return $this; //返回对象自身用于连贯操作
    }
    //取得一行结果
    public function fetchRow($sql){
        return $this->query($sql)->fetch(PDO::FETCH_ASSOC);//返回索引数组
    }
    //取得多行结果
    public function fetchAll($sql){
        return $this->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    }
}

1 이 캡슐화 클래스는 싱글톤 모드를 채택하고 구성 방법을 사유화합니다. 복제 방법을 사용하면 인스턴스화된 개체가 하나만 있을 수 있으므로 데이터베이스 연결 리소스가 절약됩니다.

2. GetInstance()는 데이터베이스 연결 개체가 생성될 때마다 호출되어야 합니다. getInstance에 데이터베이스 구성 정보를 전달합니다. 객체를 인스턴스화할 때 생성자가 자동으로 호출되어 들어오는 데이터베이스 구성 정보를 원래 정보와 병합하므로 다른 데이터베이스에 대한 연결 확장이 용이해집니다. 데이터베이스를 변경하려면 구성 정보만 변경하면 됩니다

3, 전처리를 통해 SQL 문 실행

微信图片_20180306141145.png

4, 일관된 작업 사용

微信图片_20180306141535.png

5, 쿼리 결과 집합 처리

微信图片_20180306141909.png

이것이 데이터베이스 클래스의 캡슐화입니다

지속적인 학습
||
<?php echo "封装类的处理";
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~