php基于PDO實(shí)現(xiàn)功能強(qiáng)大的MYSQL封裝類(lèi)實(shí)例
本文實(shí)例講述了php基于PDO實(shí)現(xiàn)功能強(qiáng)大的MYSQL封裝類(lèi)。分享給大家供大家參考,具體如下:
class CPdo{ protected $_dsn = "mysql:host=localhost;dbname=test"; protected $_name = "root"; protected $_pass = ""; protected $_condition = array(); protected $pdo; protected $fetchAll; protected $query; protected $result; protected $num; protected $mode; protected $prepare; protected $row; protected $fetchAction; protected $beginTransaction; protected $rollback; protected $commit; protected $char; private static $get_mode; private static $get_fetch_action; /** *pdo construct */ public function __construct($pconnect = false) { $this->_condition = array(PDO::ATTR_PERSISTENT => $pconnect); $this->pdo_connect(); } /** *pdo connect */ private function pdo_connect() { try{ $this->pdo = new PDO($this->_dsn,$this->_name,$this->_pass,$this->_condition); } catch(Exception $e) { return $this->setExceptionError($e->getMessage(), $e->getline, $e->getFile); } } /** *self sql get value action */ public function getValueBySelfCreateSql($sql, $fetchAction = "assoc",$mode = null) { $this->fetchAction = $this->fetchAction($fetchAction); $this->result = $this->setAttribute($sql, $this->fetchAction, $mode); $this->AllValue = $this->result->fetchAll(); return $this->AllValue; } /** *select condition can query */ private function setAttribute($sql, $fetchAction, $mode) { $this->mode = self::getMode($mode); $this->fetchAction = self::fetchAction($fetchAction); $this->pdo->setAttribute(PDO::ATTR_CASE, $this->mode); $this->query = $this->base_query($sql); $this->query->setFetchMode($this->fetchAction); return $this->query; } /** *get mode action */ private static function getMode($get_style){ switch($get_style) { case null: self::$get_mode = PDO::CASE_NATURAL; break; case true: self::$get_mode = PDO::CASE_UPPER; break; case false; self::$get_mode= PDO::CASE_LOWER; break; } return self::$get_mode; } /** *fetch value action */ private static function fetchAction($fetchAction) { switch($fetchAction) { case "assoc": self::$get_fetch_action = PDO::FETCH_ASSOC; //asso array break; case "num": self::$get_fetch_action = PDO::FETCH_NUM; //num array break; case "object": self::$get_fetch_action = PDO::FETCH_OBJ; //object array break; case "both": self::$get_fetch_action = PDO::FETCH_BOTH; //assoc array and num array break; default: self::$get_fetch_action = PDO::FETCH_ASSOC; break; } return self::$get_fetch_action; } /** *get total num action */ public function rowCount($sql) { $this->result = $this->base_query($sql); $this->num = $this->result->rowCount(); return $this->num; } /* *simple query and easy query action */ public function query($table, $column = "*",$condition = array(), $group = "",$order = "", $having = "", $startSet = "",$endSet = "",$fetchAction = "assoc",$params = null){ $sql = "select ".$column." from `".$table."` "; if ($condition != null) { foreach($condition as $key=>$value) { $where .= "$key = '$value' and "; } $sql .= "where $where"; $sql .= "1 = 1 "; } if ($group != "") { $sql .= "group by ".$group." "; } if ($order != "") { $sql .= " order by ".$order." "; } if ($having != "") { $sql .= "having '$having' "; } if ($startSet != "" && $endSet != "" && is_numeric($endSet) && is_numeric($startSet)) { $sql .= "limit $startSet,$endSet"; } $this->result = $this->getValueBySelfCreateSql($sql, $fetchAction, $params); return $this->result; } /** *execute delete update insert and so on action */ public function exec($sql) { $this->result = $this->pdo->exec($sql); $substr = substr($sql, 0 ,6); if ($this->result) { return $this->successful($substr); } else { return $this->fail($substr); } } /** *prepare action */ public function prepare($sql) { $this->prepare = $this->pdo->prepare($sql); $this->setChars(); $this->prepare->execute(); while($this->rowz = $this->prepare->fetch()) { return $this->row; } } /** *USE transaction */ public function transaction($sql) { $this->begin(); $this->result = $this->pdo->exec($sql); if ($this->result) { $this->commit(); } else { $this->rollback(); } } /** *start transaction */ private function begin() { $this->beginTransaction = $this->pdo->beginTransaction(); return $this->beginTransaction; } /** *commit transaction */ private function commit() { $this->commit = $this->pdo->commit(); return $this->commit; } /** *rollback transaction */ private function rollback() { $this->rollback = $this->pdo->rollback(); return $this->rollback; } /** *base query */ private function base_query($sql) { $this->setChars(); $this->query = $this->pdo->query($sql); return $this->query; } /** *set chars */ private function setChars() { $this->char = $this->pdo->query("SET NAMES 'UTF8'"); return $this->char; } /** *process sucessful action */ private function successful($params){ return "The ".$params." action is successful"; } /** *process fail action */ private function fail($params){ return "The ".$params." action is fail"; } /** *process exception action */ private function setExceptionError($getMessage, $getLine ,$getFile) { echo "Error message is ".$getMessage."<br /> The Error in ".$getLine." line <br /> This file dir on ".$getFile; exit(); } }
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》、《php+Oracle數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《PHP+MongoDB數(shù)據(jù)庫(kù)操作技巧大全》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP封裝mysqli基于面向?qū)ο蟮膍ysql數(shù)據(jù)庫(kù)操作類(lèi)與用法示例
- PHP封裝的mysqli數(shù)據(jù)庫(kù)操作類(lèi)示例
- PHP基于MySQLI函數(shù)封裝的數(shù)據(jù)庫(kù)連接工具類(lèi)【定義與用法】
- php基于單例模式封裝mysql類(lèi)完整實(shí)例
- php封裝的mysqli類(lèi)完整實(shí)例
- php mysql 封裝類(lèi)實(shí)例代碼
- php封裝的連接Mysql類(lèi)及用法分析
- php實(shí)現(xiàn)mysql封裝類(lèi)示例
- PHP訪問(wèn)MYSQL數(shù)據(jù)庫(kù)封裝類(lèi)(附函數(shù)說(shuō)明)
- php鏈?zhǔn)讲僮鱩ysql數(shù)據(jù)庫(kù)(封裝類(lèi)帶使用示例)
相關(guān)文章
PHP 數(shù)組遍歷方法大全(foreach,list,each)
php下最靈活的東西都是數(shù)組,很多數(shù)據(jù)都是通過(guò)數(shù)組的方式顯示,這里整理下數(shù)組的遍歷方法,大家可以根據(jù)需要選用。2010-06-06php中cookie實(shí)現(xiàn)二級(jí)域名可訪問(wèn)操作的方法
這篇文章主要介紹了php中cookie實(shí)現(xiàn)二級(jí)域名可訪問(wèn)操作的方法,對(duì)比了常用的setcookie函數(shù)用法,并給出了一個(gè)設(shè)置cookie的類(lèi)文件來(lái)實(shí)現(xiàn)這一功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11php高性能日志系統(tǒng) seaslog 的安裝與使用方法分析
這篇文章主要介紹了php高性能日志系統(tǒng) seaslog 的安裝與使用方法,結(jié)合實(shí)例形式分析了php日志系統(tǒng) seaslog 的安裝、配置、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-02-02php實(shí)現(xiàn)的XML操作(讀取)封裝類(lèi)完整實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)的XML操作(讀取)封裝類(lèi),給出了xml格式文件示例,并結(jié)合完整實(shí)例形式分析了php遍歷讀取xml格式數(shù)據(jù)節(jié)點(diǎn)的相關(guān)操作技巧,需要的朋友可以參考下2017-02-02