这篇文章主要介绍了php基于pdo实现功能强大的mysql封装类,结合完整实例形式分析了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实现的xml操作(封装类完整实例解析
php实现的des加密解密封装类完整的方法
php实现错误处理封装类的方法
以上就是php基于pdo实现功能强大的mysql封装类实例详解的详细内容。