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實(shí)例 private $data=array(); //操作數(shù)據(jù) private function __construct($params) { $this->dbConfig=array_merge($this->dbConfig,$params); $this->connect(); } //連接服務(wù)器 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{ //實(shí)例化PDO $this->db=new PDO($dsn,$this->dbConfig['user'],$this->dbConfig['pwd']); }catch (PDOException $exception){ die("數(shù)據(jù)庫(kù)連接失敗"); } } public static function getInstance($params=array()){ if(!self::$instance instanceof self){ self::$instance=new self($params); } return self::$instance; //返回對(duì)象 } //私有化克隆,防止外部調(diào)用clone $對(duì)象 生成新的對(duì)象,因?yàn)槭菃卫J? private function __clone() { // TODO: Implement __clone() method. } //通過預(yù)處理方式執(zhí)行sql public function query($sql,$batch=false){ $data=$batch?$this->data:array($this->data); $this->data=array(); //通過預(yù)處理方式執(zhí)行SQL $stmt=$this->db->prepare($sql); foreach($data as $v){ if($stmt->execute($v)===false){ die("數(shù)據(jù)庫(kù)PDO預(yù)處理操作失敗"); } } return $stmt; } public function data($data){ $this->data=$data; return $this; //返回對(duì)象自身用于連貫操作 } //取得一行結(jié)果 public function fetchRow($sql){ return $this->query($sql)->fetch(PDO::FETCH_ASSOC);//返回索引數(shù)組 } //取得多行結(jié)果 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, grace au prétraitement, exécuter des instructions SQL
4, utiliser des opérations cohérentes
5, traiter l'ensemble de résultats de la requête
C'est tout Encapsulation des classes de base de données