• 一个强大的封装好的pdo处理类


    php5.5后就不支持mysql扩展了,也就是说这以后都不能使用msyql_conncet之类的函数了。不过没有关系,pdo比mysql有更多优势,写法也很简单,下面贴出一个来自互联网的pdo处理类。本来自己写了一个开头,一直没时间完善,现在急用,就在网上找这个现成的,看好不好用。

    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();
    }
    }
    坚持!
  • 相关阅读:
    单例模式
    EasyExcel的基本使用方法
    交换两个整数,要求不能用一二则运算表达式,不得使用中间变量
    IDEA的基本使用技巧
    分区表常用操作汇总
    Orion测试磁盘性能
    samba安装和简单配置使用
    oracle批量处理范例
    Oracle中绑定变量的使用
    不修改sql文本情況下,改變其執行計劃
  • 原文地址:https://www.cnblogs.com/doubilaile/p/4647768.html
Copyright © 2020-2023  润新知