PHP PDO優(yōu)化數(shù)據(jù)庫操作類 多數(shù)據(jù)庫驅(qū)動類
/** * Description of pdo * * @author Administrator */class ZcPdo { public $dbh = ""; //全局連接Object; //public $sth = ""; //預處理參數(shù) private $dsn = ""; private $user = ""; private $password = ""; public $returnAy = array('errcode' => '','errmsg' => ''); //構造函數(shù) - 初始化連接 public function __construct($dsn, $user, $password) { $this->dsn = $dsn; $this->user = $user; $this->password = $password; $this->pdoConnect(); } private function pdoConnect(){ try { $this->dbh = new PDO($this->dsn, $this->user, $this->password); return $this->dbh; } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); exit(); } } //設置PDO參數(shù) public function zcAttribute($attribute, $value){ $this->dbh->setAttribute($attribute, $value); } public function zcLastId($name = NULL){ return $this->dbh->lastInsertId($name); } //數(shù)據(jù)庫單語句執(zhí)行操作 public function zcExec($param) { try { $rows = $this->dbh->exec($param);//影響行數(shù) return $this->zcLog(TRUE, $rows); } catch (PDOException $e) { return $this->zcLog(FALSE, $e->getMessage()); } } //格式化數(shù)據(jù) public function zcQuote($string){ return $this->dbh->quote($string); } //批量處理格式化數(shù)據(jù) public function zcBatchQuote($data){ $result = ""; if(!empty($data) && (is_array($data) || is_object($data))){ foreach($data as $key => $value){ if(!empty($value) && (is_array($value) || is_object($value))){ $result[$key] = $this->zcBatchQuote($value); } else{ $result[$key] = $this->zcQuote($value); } } } else { $result = $this->zcQuote($data); } return $result; } //數(shù)據(jù)庫預處理操作 - 獲取全部數(shù)據(jù) public function zcFetchAll($statement ,$parameter = NULL ,$type = PDO::FETCH_ASSOC){ try{ $sth = $this->dbh->prepare($statement); //$sth->execute($parameter); $sth->execute($this->zcBatchQuote($parameter)); $result = $sth->fetchAll($type); if(!empty($result) && is_array($result)){ return $this->zcLog(TRUE, $result); } else{ return $this->zcLog(TRUE, NULL); } } catch (PDOException $e) { return $this->zcLog(FALSE, $e->getMessage()); } } //數(shù)據(jù)庫預處理操作 - 獲取一行數(shù)據(jù) public function zcFetchRow($statement ,$parameter = NULL ,$type = PDO::FETCH_ASSOC){ try{ $sth = $this->dbh->prepare($statement); $sth->execute($this->zcBatchQuote($parameter)); $result = $sth->fetch($type); if(!empty($result) && is_array($result)){ return $this->zcLog(TRUE, $result); } else{ return $this->zcLog(TRUE, NULL); } } catch (PDOException $e) { return $this->zcLog(FALSE, $e->getMessage()); } } //數(shù)據(jù)庫預處理操作 - 獲取一個數(shù)據(jù) public function zcFetchOne($statement ,$parameter = NULL){ try{ $sth = $this->dbh->prepare($statement); $sth->execute($this->zcBatchQuote($parameter)); $result = $sth->fetch(PDO::FETCH_NUM); if(!empty($result) && is_array($result)){ return $this->zcLog(TRUE, $result[0]); } else{ return $this->zcLog(TRUE, NULL); } } catch (PDOException $e) { return $this->zcLog(FALSE, $e->getMessage()); } } //開始事務 public function zcBegin(){ $this->dbh->beginTransaction(); } //提交事務 public function zcCommit(){ $this->dbh->commit(); } //回滾事務 public function zcRollBack(){ $this->dbh->rollBack(); } //預處理事務執(zhí)行語句 public function zcPtmTstQuery($statement ,$parameter = NULL){ try{ $this->zcBegin(); $result = $this->dbh->prepare($statement)->execute($parameter); $this->zcCommit(); return $this->zcLog(TRUE, $result); } catch (PDOException $e) { $this->zcRollBack(); return $this->zcLog(FALSE, $e->getMessage()); } } //預處理執(zhí)行語句 public function zcPtmQuery($statement ,$parameter = NULL){ try{ $result = $this->dbh->prepare($statement)->execute($parameter); return $this->zcLog(TRUE, $result); } catch (PDOException $e) { return $this->zcLog(FALSE, $e->getMessage()); } } //Query執(zhí)行 public function zcQuery($statement,$type = PDO::FETCH_ASSOC){ try{ $result = $this->dbh->query($statement,$type); return $this->zcLog(TRUE, $result); } catch (PDOException $e) { return $this->zcLog(FALSE, $e->getMessage()); } } //日志LOG public function zcLog($errcode , $errmsg){ $this->returnAy = array(); $this->returnAy['errcode'] = $errcode; $this->returnAy['errmsg'] = $errmsg; $this->returnAy['errtime'] = date("Y-m-d H:i:s",time()); return $this->returnAy; }}
推薦文章
2025-01-18
2024-11-28
2024-11-09
2024-10-25
2024-06-25
2024-01-04
2023-11-06
2023-10-30
2023-10-13
2023-10-10
穩(wěn)定
產(chǎn)品高可用性高并發(fā)貼心
項目群及時溝通專業(yè)
產(chǎn)品經(jīng)理1v1支持快速
MVP模式小步快跑承諾
我們選擇聲譽堅持
10年專注高端品質(zhì)開發(fā)聯(lián)系我們
友情鏈接: