真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么寫redisdbpdo類

這篇文章主要介紹“怎么寫redis db pdo類”,在日常操作中,相信很多人在怎么寫redis db pdo類問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”怎么寫redis db pdo類”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

十載的固原網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整固原建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“固原網(wǎng)站設(shè)計(jì)”,“固原網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

 null,
        'wheresql'   => null,
        'orderBy' => null,
        'limit'   => null,
        'up'   => null,
        'ins'   => null,
        'group'   => null,
        'fields'   => null,
    ];
    private $type;
    private $tablename;
    private $deBug = false;

    public function __construct( $data = [])
    {
        if($data){
            $this->_setDbDrive($data);
        }
    }

    private function _setDbDrive($dbConf){
        $DNS = 'MySQL:host='.$dbConf['db_ip'].';dbname='.$dbConf['db_name'].';charset=utf8mb4';

        try {
            $db = new \PDO($dns,$dbConf['db_user'],$dbConf['db_pass']);
        } catch(\PDOException $e) {
            die('Could not connect to the database:
' . $e);         }         $this->conn[$dbConf['name']] = $db;     }     /**      * 判斷是否創(chuàng)建連接      * @param $table      */     private function checkTable($table){         //獲取表庫信息         $db_info = _getDBIP($table);         $this->sql = [];//重置緩存         $this->type = $db_info['name'];//緩存庫信息         //初始化連接         if(!isset($this->conn[$db_info['name']])){             $this->_setDbDrive($db_info);         }         $this->tablename = $table;     }     public function table($tablename) {         $this->checkTable($tablename);         return $this;     }     public function select($fields = '*') {         $sql = sprintf("SELECT %s FROM %s", $fields, $this->tablename);         $this->sql['fields'] = $fields;         if(!empty($this->sql['where'])) {             $sql .= ' WHERE ' . $this->sql['wheresql'];         }         if(!empty($this->sql['orderBy'])) {             $sql .= ' ORDER BY ' . $this->sql['orderBy'];         }         if(!empty($this->sql['limit'])) {             $sql .= ' LIMIT ' . $this->sql['limit'];         }         if(!empty($this->sql['group'])) {             $sql .= ' GROUP BY ' . $this->sql['group'];         }         return $this->_select($sql);     }     public function deBug(){         $this->deBug = true;         return $this;     }     public function find($fields = '*') {         $this->limit(1);         $result = $this->select($fields);         return $result;     }     public function insert($data) {         $keys = "`".implode('`,`', array_keys($data))."`";         $values = ":i".implode(", :i", array_keys($data));         $this->sql['ins'] = $data;         $querySql = sprintf("INSERT INTO %s ( %s ) VALUES ( %s )", $this->tablename, $keys, $values);         return $this->_insert($querySql);     }     public function delete() {         if(!$this->sql['where']) return false;         $querySql = sprintf("DELETE FROM %s WHERE ( %s )", $this->tablename, $this->sql['wheresql']);         return $this->_update($querySql);     }     /**      * 傳入數(shù)組 ['apid'=>['+',15],'bpid'=>105] 目前二位數(shù)組僅支持 加減      * @param $data      * @return mixed      */     public function update($data) {         $updateFields = [];         foreach ($data as $key => $value) {             if(!is_array($value)){                 $updateFields[] = "`$key`=:u{$key} ";             }else{                 $updateFields[] = "`$key`= `{$key}` {$value[0]} {$value[1]}";                 unset($data[$key]);             }         }         $this->sql['up'] = $data;         $updateFields = implode(',', $updateFields);         $sql = sprintf("UPDATE %s SET %s", $this->tablename, $updateFields);         if(!empty($this->sql['where'])) {             $sql .= ' WHERE ' . $this->sql['wheresql'];         }         return $this->_update($sql);     }     public function limit($limit, $limitCount = null) {         if(!$limitCount) {             $this->sql['limit'] = $limit;         }else{             $this->sql['limit'] = $limit .','. $limitCount;         }         return $this;     }     public function orderBy($orderBy) {         $this->sql['orderBy'] = $orderBy;         return $this;     }     public function groupBy($group) {         $this->sql['group'] = $group;         return $this;     }     public function where($where) {         if(!is_array($where)) {             return null;         }         $crondsArr = [];         foreach ($where as $key => $value) {             if(!is_array($value)) {                 $crondsArr[] = "`$key`=:w{$key}";                 continue;             }else if($value[0] == 'in'){//處理in邏輯                 $val = ' (';                 foreach($value[1] as $k=>$v){                     if($k == 0){                         $val .= ':win'.$k;                     }else{                         $val .= ',:win'.$k;                     }                 }                 $val .= ')';             }else{//處理 > < <> 等邏輯                 $val = ' :w' . $key;             }             $crondsArr[] = "`$key` ".$value[0]. $val;         }         $this->sql['wheresql'] = implode(' AND ', $crondsArr);         $this->sql['where'] = $where;         return $this;     }     public function whereOr($where) {         if(!is_array($where)) {             return null;         }         $crondsArr = [];         foreach ($where as $key => $value) {             $fieldValue = $value;             if(is_array($fieldValue)) {                 $crondsArr[] = "`$key` ".$fieldValue[0]. ' :wo' . $key;             }else{                 $crondsArr[] = "`$key`=:wo{$key}";             }         }         $sql = implode(' OR ', $crondsArr);         if(!empty($this->sql['wheresql'])){             $this->sql['wheresql'] .=  ' AND ' . '(' . $sql . ')';         }else{             $this->sql['wheresql'] =  '(' . $sql . ')';         }         if(!empty($this->sql['whereor'])){             $this->sql['whereor'] = array_merge($this->sql['whereor'], $where);         }else{             $this->sql['whereor'] = $where;         }         return $this;     }     private function _select($sql){         if($this->type == 'master') {             //確認(rèn)redis緩存數(shù)據(jù)             if($data = $this->_checkRedisMasterData()){                 return $data;             }         }         $stmt = $this->conn[$this->type]->prepare($sql);         $stmt = $this->_setWhereParam($stmt);         if($this->deBug){             return $stmt->debugDumpParams();         }         $ret = $stmt->execute();         if(!$ret) return null;         if($this->sql['limit'] == 1){             $retData = $stmt->fetch(\PDO::FETCH_ASSOC);         }else{             $retData = $stmt->fetchAll(\PDO::FETCH_ASSOC);         }         $re_data = $this->_formatTransform($retData);         return $this->_wirteRedisMasterData($re_data);     }     private function _update($sql){         $stmt = $this->conn[$this->type]->prepare($sql);         $stmt = $this->_setWhereParam($stmt);         //update         if(!empty($this->sql['up'])){             foreach($this->sql['up'] as $k=>$v){                 $stmt->bindValue('u'.$k,trim($v,'\''));             }         }         if($this->deBug){             return $stmt->debugDumpParams();         }         $ret = $stmt->execute();         return $ret;     }     private function _insert($sql){         $stmt = $this->conn[$this->type]->prepare($sql);         //install         if(!empty($this->sql['ins'])){             foreach($this->sql['ins'] as $k=>$v){                 $stmt->bindValue('i'.$k,$v);             }         }         $ret = $stmt->execute();         if($ret) {             return $this->conn[$this->type]->lastInsertId();         }         return false;     }     private function _setWhereParam($stmt){         //綁定參數(shù) where         if(!empty($this->sql['where'])){             foreach($this->sql['where'] as $k=>$v){                 if(!is_array($v)){                     $val = $v;                 }else                 if($v[0] == 'in'){                     foreach($v[1] as $key=>$v1){                         $stmt->bindValue('win'.$key,$v1);                     }                     continue;                 }else{                     $val = $v[1];                 }                 $stmt->bindValue('w'.$k,$val);             }         }         if(!empty($this->sql['whereor'])){             foreach($this->sql['whereor'] as $k=>$v){                 if(!is_array($v)){                     $val = $v;                 }else{                     $val = $v[1];                 }                 $stmt->bindValue('wo'.$k,$val);             }         }         return $stmt;     }     public function close() {         return $this->conn = null;     }     //開啟事務(wù)     public function startTrans($tab = 'item'){         //準(zhǔn)備數(shù)據(jù)庫資源         $this->table($tab);         if(empty($this->conn['server'])){             exit();         }         $this->conn['server']->beginTransaction();     }     //提交事務(wù)     public function dbCommit(){         if(empty($this->conn['server'])){             exit();         }         $this->conn['server']->commit();     }     //回滾事務(wù)     public function dbRollBack($data = '',$e = ''){         if(empty($this->conn['server'])){             exit();         }         $this->conn['server']->rollBack();         if(!empty($data) &&!empty($e)){             _writeLog($data,'update-error--'.date('Y-m-d H:i:s').$e->getMessage(),'error');         }     }     /**      * 原生查詢      * @param $querySql      * @return mixed      */     public function query($table, $querySql) {         $this->checkTable($table);         $querystr = strtolower(trim(substr($querySql,0,6)));         $stmt = $this->conn[$this->type]->prepare($querySql);         $ret = $stmt->execute();         $this->sql = [];         if(!$ret) var_dump($stmt->errorInfo());         if($querystr == 'select') {             $retData = $stmt->fetchAll(\PDO::FETCH_ASSOC);             return $this->_formatTransform($retData);         }elseif($ret && $querystr == 'insert') {             return $this->conn[$this->type]->lastInsertId();         }else{             return $this->_formatTransform($ret);         }     }     private function _formatTransform($data){         if(!is_array($data))return $data;         if($this->tablename == 'round_star'             || $this->tablename == 'chapter_reward'             || $this->tablename == 'dailyround'         ){         }elseif($this->tablename == 'userdatas' || $this->tablename == 'userDatas'){             array_walk_recursive($data, function(&$value , $key){                 if($key == 'coin'){                     $value = (string)$value;                 }elseif(ctype_digit($value)){                     $value = (int)$value;                 }elseif(is_json($value)){                     // jsonチェック                     $value = json_decode($value, true);                 }             });         }else{             array_walk_recursive($data, function(&$value, $key){                 if(ctype_digit($value) && $key != 'name'){                     $value = (int)$value;                 }elseif(is_json($value)){                     $value = json_decode($value, true);                 }             });         }         return $data;     }     /**      * 二維數(shù)組多條更新      * @param $data      */     public function updateAll($data){         if(!empty($data['table'])){             $table = $data['table'];             $whe = ['id'=>$data['id']];             unset($data['table']);             unset($data['id']);             $t = $this->table($table)->where($whe)->insert($data);             if(!$t)return false;         }else{             foreach($data as $k=>$v){                 $table = $v['table'];                 $whe = ['id'=>$v['id']];                 unset($v['table']);                 unset($v['id']);                 $t = $this->table($table)->where($whe)->update($v);                 if(!$t)return false;             }         }         return true;     }     /**      * 多條數(shù)據(jù)插入      * @param $data      */     public function insertAll($data){         if(!empty($data['table'])){             $table = $data['table'];             unset($data['table']);             $t = $this->table($table)->insert($data);             if(!$t)return false;         }else{             foreach($data as $k=>$v){                 $table = $v['table'];                 unset($v['table']);                 $t = $this->table($table)->insert($v);                 if(!$t)return false;             }         }         return true;     }     /**      * @param $table      * @param $on      * @param string $join      * @param string $t1      */     public function join($table, $on, $join = ' left ', $t1 = ' a '){         $this->tablename .= $t1 . $join . $table . $on;     }     //確認(rèn)緩存并獲取     private function _checkRedisMasterData(){         if(_getRedis()->exists($this->_getMasterRedisName())){             $data = json_decode(_getRedis()->get($this->_getMasterRedisName()),true);             return $data;         }         return false;     }     //寫入緩存,設(shè)置有效期     private function _wirteRedisMasterData($data){         if($this->type != 'master') return $data;         _getRedis()->set($this->_getMasterRedisName(),json_encode($data));         _getRedis()->expire($this->_getMasterRedisName(),MASTER_EXPIRE);         $this->sql = [];         return $data;     }     //獲取緩存名     private function _getMasterRedisName(){         $arr = [             'string',             $this->tablename,             json_encode($this->sql['where']),             $this->sql['limit'],             $this->sql['orderBy'],             $this->sql['group'],             $this->sql['fields'],         ];         $str = implode('_',$arr);         return $str;     } }

到此,關(guān)于“怎么寫redis db pdo類”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


分享標(biāo)題:怎么寫redisdbpdo類
URL鏈接:http://weahome.cn/article/ipjged.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部