日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

數(shù)據(jù)庫連接類,繼承自PDO

 緣夢書摘 2014-04-25

<?php
/**
* 數(shù)據(jù)庫連接類,繼承自PDO
*/
class DataBase extends PDO  {
     private $dsn       = "mysql:host=127.0.0.1;dbname=test";
     private $username = "root";
     private $password = "123456";

     /**
      * 構(gòu)造函數(shù)
      *
      */
     public function __construct() {
         PDO::__construct($this->dsn, $this->username, $this->password, array(PDO::ATTR_PERSISTENT => true));
         parent::exec('set names utf8');
         parent::setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
     }

     /**
      * 析構(gòu)函數(shù)
      *
      */
     public function __destruct() {
     }

     /**
      * 執(zhí)行單一的SELECT語句
      *
      * @param string $sql 待執(zhí)行的SQL語句
      * @param string $fetch_style 以哪種形式返回數(shù)據(jù) PDO::FETCH_ASSOC PDO::FETCH_NUM PDO::FETCH_BOTH 等
      * @return array
      */
     function aQuery($sql,$fetch_style=PDO::FETCH_ASSOC) {
         try {
             $stmt = $this->query($sql);
             return $stmt->fetchAll($fetch_style);
         } catch (Exception $e) {
             try {
                 return $this->exec($sql);
             } catch (Exception $e) {
                 die($e->getMessage());
             }
         }
     }

     /**
      * 執(zhí)行帶有綁定參數(shù)的SQL語句
      *
      * @param string $sql 要執(zhí)行的SQL語句
      * @param array $array 綁定的參數(shù)
      * @param string $fetch_style 以哪種形式返回數(shù)據(jù) PDO::FETCH_ASSOC PDO::FETCH_NUM PDO::FETCH_BOTH 等
      * @return array or bool
      */
     function moreExec($sql,$array=array(),$fetch_style=PDO::FETCH_ASSOC) {
         try {
             $stmt = $this->prepare($sql);
             if(count($array) > 0) {
                 foreach ($array as $k => $v) {
                     $stmt->bindValue($k,$v);
                 }
             }

             if(substr(trim($sql),0,6) == 'select') {
                 $stmt->execute();
                 return $stmt->fetchAll($fetch_style);
             } else {
                 return $stmt->execute();
             }
         } catch (Exception $e) {
             die($e->getMessage());
         }
     }

     /**
      * 執(zhí)行帶參數(shù)的語句,并返回總數(shù) 主要用于帶分頁的SELECT語句
      *
      * @param string or array $sql 要執(zhí)行的SQL語句
      * @param array $array 綁定的參數(shù)
      * @param string $fetch_style 以哪種形式返回數(shù)據(jù) PDO::FETCH_ASSOC PDO::FETCH_NUM PDO::FETCH_BOTH 等
      * @return array
      */
     function moreExecCount($sql,$array=array(),$fetch_style=PDO::FETCH_ASSOC) {
         $patterns[0] = "/select .*? from/i";
         $patterns[1] = "/from (\w+) (.*?) where/i";
         $patterns[2] = "/group by (.*?) limit/i";
         $patterns[3] = "/having (.*?) limit/i";
         $patterns[4] = "/order by (.*?) limit/i";
         $patterns[5] = "/limit (\d+),(\d+)/i";
         $patterns[6] = "/limit (\d+)/i";
         $replacements[0] = 'select count(*) as sum from';
         $replacements[1] = "from \$1 where";
         $replacements[2] = 'limit';
         $replacements[3] = 'limit';
         $replacements[4] = 'limit';
         $replacements[5] = '';
         $replacements[6] = '';
         $sqlCount = preg_replace($patterns, $replacements, $sql);

         $sum = $this->moreExec($sqlCount,$array);
         return array($this->moreExec($sql,$array,$fetch_style), 'sum'=>$sum[0]['sum']);
     }

     /**
      * 執(zhí)行一個事務
      *
      * @param array $sql_array 一些需要同時執(zhí)行的SQL語句
      * @return bool
      */
     function Transaction($sql_array) {
         try {
             $this->beginTransaction();
             foreach ($sql_array as $sql) {
                 $s = trim($sql);
                 if(substr($s,0,6) == 'select') {
                     $this->aQuery($s);
                 } else {
                     $this->exec($s);
                 }
             }
             $this->commit();
             return true;
         } catch (Exception $e) {
             $this->rollBack();
             return false;
         }
     }
}
?>

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多