代码
//自己写的一个PDO类

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();
}
}

 

 

 

 

 

转自:http://hi.baidu.com/striver_php/blog/item/b97201c502d61da08326ac6e.html

 

 

 

 

 

posted on 2010-08-12 01:22  小炒花生米  阅读(8220)  评论(0编辑  收藏  举报