Encapsuler la b...LOGIN

Encapsuler la base de données des opérations PDO

1. Créez le fichier MysqlPdo.class.php pour encapsuler la base de données des opérations PDO

Le code spécifique est le suivant :

<?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. La méthode de clonage garantit qu'il ne peut y avoir qu'un seul objet instancié, économisant ainsi les ressources de connexion à la base de données.

2. GetInstance() doit être appelé chaque fois qu'un objet de connexion à la base de données est créé. Transmettez les informations de configuration de la base de données dans getInstance pour. utilisation dans Lors de l'instanciation d'un objet, le constructeur est automatiquement appelé pour fusionner les informations de configuration de la base de données entrantes avec les informations d'origine, ce qui facilite l'expansion des connexions à d'autres bases de données. Pour changer de base de données, il vous suffit de modifier les informations de configuration

. 3, grâce au prétraitement, exécuter des instructions SQL

微信图片_20180306141145.png

4, utiliser des opérations cohérentes

微信图片_20180306141535.png

5, traiter l'ensemble de résultats de la requête

微信图片_20180306141909.png

C'est tout Encapsulation des classes de base de données

section suivante
<?php echo "封装类的处理";
soumettreRéinitialiser le code
chapitredidacticiel