一個關於php使用pdo方式進行資料庫連線和處理的類
阿新 • • 發佈:2018-12-24
話不多說,先貼程式碼
<?php /** @DB Operates For PDO @author:MeeeeN @date:2015-10-22 22:40:32 **/ //定義資料庫資訊 header("Content-type:text/html; charset=utf-8"); define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PWD', ''); define('DB_NAME', 'lesson'); class DBPDO { private static $instance; public $dsn; public $dbuser; public $dbpwd; public $sth; public $dbh; //初始化 function __construct() { $this->dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME; $this->dbuser = DB_USER; $this->dbpwd = DB_PWD; $this->connect(); $this->dbh->query("SET NAMES 'UTF8'"); $this->dbh->query("SET TIME_ZONE = '+8:00'"); } //連線資料庫 public function connect() { try { $this->dbh = new PDO($this->dsn, $this->dbuser, $this->dbpwd); } catch(PDOException $e) { exit('連線失敗:'.$e->getMessage()); } } //獲取表字段 public function getFields($table='vista_order') { $this->sth = $this->dbh->query("DESCRIBE $table"); $this->getPDOError(); $this->sth->setFetchMode(PDO::FETCH_ASSOC); $result = $this->sth->fetchAll(); $this->sth = null; return $result; } //插入資料 public function insert($sql) { if($this->dbh->exec($sql)) { $this->getPDOError(); return $this->dbh->lastInsertId(); } return false; } //刪除資料 public function delete($sql) { if(($rows = $this->dbh->exec($sql)) > 0) { $this->getPDOError(); return $rows; } else { return false; } } //更改資料 public function update($sql) { if(($rows = $this->dbh->exec($sql)) > 0) { $this->getPDOError(); return $rows; } return false; } //獲取資料 public function select($sql) { $this->sth = $this->dbh->query($sql); $this->getPDOError(); $this->sth->setFetchMode(PDO::FETCH_ASSOC); $result = $this->sth->fetchAll(); $this->sth = null; return $result; } //獲取數目 public function count($sql) { $count = $this->dbh->query($sql); $this->getPDOError(); return $count->fetchColumn(); } //獲取PDO錯誤資訊 private function getPDOError() { if($this->dbh->errorCode() != '00000') { $error = $this->dbh->errorInfo(); exit($error[2]); } } //關閉連線 public function __destruct() { $this->dbh = null; } } //eg: an example for operate select $test = new DBPDO; $sql = "SELECT * FROM `vista_order` WHERE `id`!=100 "; $rs = $test->select($sql); print_r($rs); ?>
這是之前研究了一段時間pdo後所寫出來的一個pdo資料庫相關操作類(比較懶,一直沒更新部落格),參考了一些網上的相關文章,但是感覺很多要麼寫得有錯誤,要麼很囉嗦,所以自己搞了個,其實本來我是一直是用mysql類連線的,但是升級了php版本後發現不支援mysql方式連線了,又感覺mysqli比較囉嗦,所以索性改為用pdo,其實基本功能來說的話,這個類中construct,connection,destruct三個function就足夠了,不過方便快速使用的話還是多寫了一些function,個人感覺這個類的可移植性還是蠻高的,最後有使用的例子,基本上引用DBPDO類之後,只要自己寫好sql語句,增刪改查就都可以實現了