欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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程序设计有所帮助。