<?php /** * Description of pdo * * @author Administrator */ class ZcPdo { public $dbh = ""; //全局连接Object; //public $sth = ""; //预处理参数 private $dsn = ""; private $user = ""; private $password = ""; public $returnAy = array('errcode' => '','errmsg' => ''); //构造函数 - 初始化连接 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参数 public function zcAttribute($attribute, $value){ $this->dbh->setAttribute($attribute, $value); } public function zcLastId($name = NULL){ return $this->dbh->lastInsertId($name); } //数据库单语句执行操作 public function zcExec($param) { try { $rows = $this->dbh->exec($param);//影响行数 return $this->zcLog(TRUE, $rows); } catch (PDOException $e) { return $this->zcLog(FALSE, $e->getMessage()); } } //格式化数据 public function zcQuote($string){ return $this->dbh->quote($string); } //批量处理格式化数据 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; } //数据库预处理操作 - 获取全部数据 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()); } } //数据库预处理操作 - 获取一行数据 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()); } } //数据库预处理操作 - 获取一个数据 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(); } //预处理事务执行语句 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()); } } //预处理执行语句 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执行 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; } }
转载请注明:苏demo的别样人生 » PHP PDO优化数据库操作类 多数据库驱动类