91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

開發自己的框架——(二)數據庫工具類的封裝

發布時間:2020-07-29 04:56:41 來源:網絡 閱讀:607 作者:流體石頭 欄目:數據庫

為了讓框架的內容與數據分離,我們把常用的類封裝到一個工具類中,當用到這些方法時,就調用這個封裝好的類,能夠使代碼的復用性得到很大的提高。
首先,封裝數據庫相關操作,為了使封裝規范化,我們創建一個接口讓數據庫實現接口中的方法,數據庫使用PDO擴展訪問數據。
數據庫接口類 
I_DAO.interface.php

<?php
interface I_DAO
{
        //查詢所有數據的功能
        public function getAll($sql='');
//    //查詢一條數據
        public function getRow($sql='');
//    //查詢一個字段的值
        public function getOne($sql='');
//    //執行增刪改的功能
        public function exec($sql='');
//    (查詢的時候,返回的結果數)
        public function resultRows();
//    //查詢執行插入操作返回的主鍵的值
        public function lastInsertId();
//    //
        public function query($sql='');
//    //轉義引號、并包裹的
        public function escapeData($data='');
}

數據庫工具類中,對象只能通過靜態方法創建一個實例(單例模式),不能通過克隆和繼承創建對象,數據庫的連接信息通過數組傳遞到方法中,工具類中有查詢所有數據方法、查詢一條數據方法、獲得一個字段值的方法、實現增刪改方法、
返回結果數量的方法等。
數據庫操作工具類
DAOPDO.class.php

<?php

class DAOPDO implements I_DAO
{    
    private $host;
    private $dbname;
    private $user;
    private $pass;
    private $port;
    private $charset;
    
    //該屬性保存pdo對象
    private $pdo;
    
    //查詢語句返回的結果集數量
    private $resultRows;
    
    //私有屬性保存該該實例
    private static $instance;
    //私有的構造方法
    private function __construct($option=array())
    {
        //初始化服務器的配置
        $this -> initOptions($option);
        //初始化PDO對象
        $this -> initPDO();
    }
    //私有的克隆方法
    private function __clone()
    {
        
    }
    //公共的靜態方法實例化單例對象
    public static function getSingleton($options=array())
    {
        if(!self::$instance instanceof self){
            //實例化
            self::$instance = new self($options);
        }
        return self::$instance;
    }
    //初始化服務器的配置
    private function initOptions($option)
    {
        $this -> host = isset($option['host'])?$option['host']:'';
        $this -> dbname = isset($option['dbname'])?$option['dbname']:'';
        $this -> user = isset($option['user'])?$option['user']:'';
        $this -> pass = isset($option['pass'])?$option['pass']:'';
        $this -> port = isset($option['port'])?$option['port']:'';
        $this -> charset = isset($option['charset'])?$option['charset']:'';
    }
    //初始化PDO對象
    private function initPDO()
    {
        $dsn = 
        "mysql:host=$this->host;dbname=$this->dbname;port=$this->port;charset=$this->charset";
        $this -> pdo = new PDO($dsn,$this->user,$this->pass);
    }
    //封裝pdostatement對象
    public function query($sql="")
    {    
        //返回pdo_statement對象
        return $this->pdo -> query($sql);
    }
    //查詢所有數據
    public function getAll($sql='')
    {
        $pdo_statement = $this->query($sql);
        $this->resultRows = $pdo_statement -> rowCount();
        if($pdo_statement==false){
            //輸出SQL語句的錯誤信息
            $error_info = $this->pdo-> errorInfo();
            $err_str = "SQL語句錯誤,具體信息如下:<br>".$error_info[2];
            echo $err_str;
            return false;
        }
        $result = $pdo_statement -> fetchAll(PDO::FETCH_ASSOC);
        return $result;
    }
    //查詢一條記錄
    public function getRow($sql='')
    {
        $pdo_statement = $this->query($sql);
        if($pdo_statement==false){
            //輸出SQL語句的錯誤信息
            $error_info = $this->pdo-> errorInfo();
            $err_str = "SQL語句錯誤,具體信息如下:<br>".$error_info[2];
            echo $err_str;
            return false;
        }
        $result = $pdo_statement -> fetch(PDO::FETCH_ASSOC);
        return $result;
    }
    //獲得一個字段的值
    public function getOne($sql='')
    {
        $pdo_statement = $this->query($sql);
        if($pdo_statement==false){
            //輸出SQL語句的錯誤信息
            $error_info = $this->pdo-> errorInfo();
            $err_str = "SQL語句錯誤,具體信息如下:<br>".$error_info[2];
            echo $err_str;
            return false;
        }
        //返回查詢的字段的值,我們在執行sql語句之前就應該明確查詢的是哪個字段,這樣fetchColumn就已經知道查詢的字段值
        $result = $pdo_statement -> fetchColumn();
        return $result;
    }
    //實現非查詢的方法
    public function exec($sql='')
    {
        $result = $this->pdo -> exec($sql);
        //===為了區分 受影響的記錄數是0的情況
        if($result===false){
            $error_info = $this->pdo-> errorInfo();
            $err_str = "SQL語句錯誤,具體信息如下:<br>".$error_info[2];
            echo $err_str;
            return false;
        }
        return $result;
    }
    //查詢語句返回的結果數量
    public function resultRows()
    {
        return $this->resultRows;
    }
    //返回上次執行插入語句返回的主鍵值
    public function lastInsertId()
    {
        return $this->pdo->lastInsertId();
    }
    //數據轉義并引號包裹
    public function escapeData($data='')
    {
        return $this->pdo->quote($data);
    }
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安达市| 呈贡县| 万安县| 和田县| 迁西县| 昌江| 赤壁市| 屏南县| 井陉县| 思茅市| 沂水县| 青神县| 开鲁县| 鄂州市| 永年县| 朝阳县| 重庆市| 漾濞| 安国市| 夏邑县| 特克斯县| 象山县| 新乡市| 永胜县| 云梦县| 汉寿县| 宜丰县| 苏尼特右旗| 博湖县| 勐海县| 宜黄县| 舟曲县| 凤山县| 嫩江县| 宜兰市| 通许县| 土默特左旗| 定西市| 万年县| 荔波县| 肇州县|