php基于PDO实现功能强大的MYSQL封装类实例

5年以前  |  阅读数:300 次  |  编程语言:PHP 

本文实例讲述了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程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例