Encapsulate PDO operation database
1, create the file MysqlPdo.class.php file to encapsulate the PDO operation database
The specific code is as follows:
<?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ù)庫連接失敗"); } } public static function getInstance($params=array()){ if(!self::$instance instanceof self){ self::$instance=new self($params); } return self::$instance; //返回對象 } //私有化克隆,防止外部調(diào)用clone $對象 生成新的對象,因為是單例模式 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ù)庫PDO預(yù)處理操作失敗"); } } return $stmt; } public function data($data){ $this->data=$data; return $this; //返回對象自身用于連貫操作 } //取得一行結(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. This encapsulation class adopts singleton mode and privatizes the construction method and cloning method to ensure that there can only be one instantiated object and save database connection resources.
2, getInstance() must be called every time a database connection object is created. Pass in the database configuration information in getInstance to automatically call the constructor when instantiating the object to use the incoming database configuration information. Merge with the original information to facilitate the expansion of connections to other databases. To change the database, you only need to change the configuration information
3. Execute the sql statement through preprocessing
##4, the use of coherent operations
5, processing the query result set