一聚教程网:一个值得你收藏的教程网站

热门教程

php基于PDO实现功能强大的MYSQL封装类实例

时间:2022-06-24 18:42:06 编辑:袖梨 来源:一聚教程网

 

 代码如下 复制代码

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;

 /**

 *pdo construct

 */

 publicfunction__construct($pconnect= false) {

  $this->_condition =array(PDO::ATTR_PERSISTENT =>$pconnect);

  $this->pdo_connect();

 }

 /**

 *pdo connect

 */

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

  }

 }

 /**

 *self sql get value action

 */

 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;

 }

 /**

 *select condition can query

 */

 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;

 }

 /**

 *get mode action

 */

 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;

 }

 /**

 *fetch value action

 */

 privatestaticfunctionfetchAction($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;

  }

  returnself::$get_fetch_action;

 }

 /**

 *get total num action

 */

 publicfunctionrowCount($sql) {

  $this->result =$this->base_query($sql);

  $this->num =$this->result->rowCount();

  return$this->num;

 }

 /*

 *simple query and easy query action

 */

 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.="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

 */

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

  }

 }

 /**

 *prepare action

 */

 publicfunctionprepare($sql) {

  $this->prepare =$this->pdo->prepare($sql);

  $this->setChars();

  $this->prepare->execute();

  while($this->rowz =$this->prepare->fetch()) {

   return$this->row;

  }

 }

 /**

 *USE transaction

 */

 publicfunctiontransaction($sql) {

  $this->begin();

  $this->result =$this->pdo->exec($sql);

  if($this->result) {

   $this->commit();

  }else{

   $this->rollback();

  }

 }

 /**

 *start transaction

 */

 privatefunctionbegin() {

  $this->beginTransaction =$this->pdo->beginTransaction();

  return$this->beginTransaction;

 }

 /**

 *commit transaction

 */

 privatefunctioncommit() {

  $this->commit =$this->pdo->commit();

  return$this->commit;

 }

 /**

 *rollback transaction

 */

 privatefunctionrollback() {

  $this->rollback =$this->pdo->rollback();

  return$this->rollback;

 }

 /**

 *base query

 */

 privatefunctionbase_query($sql) {

  $this->setChars();

  $this->query =$this->pdo->query($sql);

  return$this->query;

 }

 /**

 *set chars

 */

 privatefunctionsetChars() {

  $this->char =$this->pdo->query("SET NAMES 'UTF8'");

  return$this->char;

 }

 /**

 *process sucessful action

 */

 privatefunctionsuccessful($params){

  return"The ".$params." action is successful";

 }

 /**

 *process fail action

 */

 privatefunctionfail($params){

  return"The ".$params." action is fail";

 }

 /**

 *process exception action

 */

 privatefunctionsetExceptionError($getMessage,$getLine,$getFile) {

  echo"Error message is ".$getMessage."
The Error in ".$getLine." line
This file dir on ".$getFile;

  exit();

 }

}

 

热门栏目