php基于PDO实现功能强大的MYSQL封装类实例
本文实例讲述了php基于PDO实现功能强大的MYSQL封装类。分享给大家供大家参考,具体如下:
classCPdo{
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;
privatestatic$get_mode;
privatestatic$get_fetch_action;
/**
*pdoconstruct
*/
publicfunction__construct($pconnect=false){
$this->_condition=array(PDO::ATTR_PERSISTENT=>$pconnect);
$this->pdo_connect();
}
/**
*pdoconnect
*/
privatefunctionpdo_connect(){
try{
$this->pdo=newPDO($this->_dsn,$this->_name,$this->_pass,$this->_condition);
}
catch(Exception$e){
return$this->setExceptionError($e->getMessage(),$e->getline,$e->getFile);
}
}
/**
*selfsqlgetvalueaction
*/
publicfunctiongetValueBySelfCreateSql($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;
}
/**
*selectconditioncanquery
*/
privatefunctionsetAttribute($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;
}
/**
*getmodeaction
*/
privatestaticfunctiongetMode($get_style){
switch($get_style){
casenull:
self::$get_mode=PDO::CASE_NATURAL;
break;
casetrue:
self::$get_mode=PDO::CASE_UPPER;
break;
casefalse;
self::$get_mode=PDO::CASE_LOWER;
break;
}
returnself::$get_mode;
}
/**
*fetchvalueaction
*/
privatestaticfunctionfetchAction($fetchAction){
switch($fetchAction){
case"assoc":
self::$get_fetch_action=PDO::FETCH_ASSOC;//assoarray
break;
case"num":
self::$get_fetch_action=PDO::FETCH_NUM;//numarray
break;
case"object":
self::$get_fetch_action=PDO::FETCH_OBJ;//objectarray
break;
case"both":
self::$get_fetch_action=PDO::FETCH_BOTH;//assocarrayandnumarray
break;
default:
self::$get_fetch_action=PDO::FETCH_ASSOC;
break;
}
returnself::$get_fetch_action;
}
/**
*gettotalnumaction
*/
publicfunctionrowCount($sql){
$this->result=$this->base_query($sql);
$this->num=$this->result->rowCount();
return$this->num;
}
/*
*simplequeryandeasyqueryaction
*/
publicfunctionquery($table,$column="*",$condition=array(),$group="",$order="",$having="",$startSet="",$endSet="",$fetchAction="assoc",$params=null){
$sql="select".$column."from`".$table."`";
if($condition!=null){
foreach($conditionas$key=>$value){
$where.="$key='$value'and";
}
$sql.="where$where";
$sql.="1=1";
}
if($group!=""){
$sql.="groupby".$group."";
}
if($order!=""){
$sql.="orderby".$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;
}
/**
*executedeleteupdateinsertandsoonaction
*/
publicfunctionexec($sql){
$this->result=$this->pdo->exec($sql);
$substr=substr($sql,0,6);
if($this->result){
return$this->successful($substr);
}else{
return$this->fail($substr);
}
}
/**
*prepareaction
*/
publicfunctionprepare($sql){
$this->prepare=$this->pdo->prepare($sql);
$this->setChars();
$this->prepare->execute();
while($this->rowz=$this->prepare->fetch()){
return$this->row;
}
}
/**
*USEtransaction
*/
publicfunctiontransaction($sql){
$this->begin();
$this->result=$this->pdo->exec($sql);
if($this->result){
$this->commit();
}else{
$this->rollback();
}
}
/**
*starttransaction
*/
privatefunctionbegin(){
$this->beginTransaction=$this->pdo->beginTransaction();
return$this->beginTransaction;
}
/**
*committransaction
*/
privatefunctioncommit(){
$this->commit=$this->pdo->commit();
return$this->commit;
}
/**
*rollbacktransaction
*/
privatefunctionrollback(){
$this->rollback=$this->pdo->rollback();
return$this->rollback;
}
/**
*basequery
*/
privatefunctionbase_query($sql){
$this->setChars();
$this->query=$this->pdo->query($sql);
return$this->query;
}
/**
*setchars
*/
privatefunctionsetChars(){
$this->char=$this->pdo->query("SETNAMES'UTF8'");
return$this->char;
}
/**
*processsucessfulaction
*/
privatefunctionsuccessful($params){
return"The".$params."actionissuccessful";
}
/**
*processfailaction
*/
privatefunctionfail($params){
return"The".$params."actionisfail";
}
/**
*processexceptionaction
*/
privatefunctionsetExceptionError($getMessage,$getLine,$getFile){
echo"Errormessageis".$getMessage."<br/>TheErrorin".$getLine."line<br/>Thisfilediron".$getFile;
exit();
}
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+Oracle数据库程序设计技巧总结》、《PHP+MongoDB数据库操作技巧大全》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
