php基于PDO实现功能强大的MYSQL封装类实例
程序员文章站
2024-03-13 18:23:39
本文实例讲述了php基于pdo实现功能强大的mysql封装类。分享给大家供大家参考,具体如下:
class cpdo{
protected $_dsn = "...
本文实例讲述了php基于pdo实现功能强大的mysql封装类。分享给大家供大家参考,具体如下:
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(); } }
更多关于php相关内容感兴趣的读者可查看本站专题:《php基于pdo操作数据库技巧总结》、《php+oracle数据库程序设计技巧总结》、《php+mongodb数据库操作技巧大全》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家php程序设计有所帮助。