PHP實現PDO的mysql資料庫操作類_php技巧

來源:互聯網
上載者:User

本文執行個體講述了PHP實現PDO的mysql資料庫操作類。分享給大家供大家參考。具體分析如下:

dbconfig類負責設定資料庫訪問資訊,包括:伺服器位址、連接埠、資料庫執行個體名、使用者名稱、使用者密碼、字元集等.

dbtemplate類集合了對資料庫的訪問操作,主要有以下幾個操作:

1. queryrows:返回多行記錄

2. queryrow:返回為單條記錄

3. queryforint:查詢單欄位,返回整數

4. queryforfloat:查詢單欄位,返回浮點數(float)

5. queryfordouble:查詢單欄位,返回浮點數(double)

6. queryforobject:查詢單欄位,返回對象,實際類型有資料庫決定

7. update : 執行一條更新語句. insert / upadate / delete

具體代碼如下:

複製代碼 代碼如下:
class dbconfig {
    private static $dbms = "mysql";
    private static $host = '127.0.0.1';
    private static $port = '3306';
    private static $username = '';
    private static $password = '';
    private static $dbname = '';
    private static $charset = 'utf-8';
    private static $dsn;
 
    /**
     *
     * @return   返回pdo dsn配置
     */
    public static function getdsn() {
        if (!isset(self::$dsn)) {
            self::$dsn = self::$dbms . ':host=' . self::$host . ';port=' .
                    self::$port . ';dbname=' . self::$dbname;
            if (strlen(self::$charset) > 0) {
                self::$dsn = self::$dsn . ';charset=' . self::$charset;
            }
        }
        return self::$dsn;
    }
 
    /**
     * 設定mysql資料庫伺服器主機
     * @param  $host 主機的ip地址
     */
    public static function sethost($host) {
        if (isset($host) && strlen($host) > 0)
            self::$host = trim($host);
    }
 
    /**
     * 設定mysql資料庫伺服器的連接埠
     * @param  $port 連接埠
     */
    public static function setport($port) {
        if (isset($port) && strlen($port) > 0)
            self::$port = trim($port);
    }
 
    /**
     * 設定mysql資料庫伺服器的登陸使用者名稱
     * @param  $username
     */
    public static function setusername($username) {
        if (isset($username) && strlen($username) > 0)
            self::$username = $username;
    }
 
    /**
     * 設定mysql資料庫伺服器的登陸密碼
     * @param  $password
     */
    public static function setpassword($password) {
        if (isset($password) && strlen($password) > 0)
            self::$password = $password;
    }
 
    /**
     * 設定mysql資料庫伺服器的資料庫執行個體名
     * @param  $dbname 資料庫執行個體名
     */
    public static function setdbname($dbname) {
        if (isset($dbname) && strlen($dbname) > 0)
            self::$dbname = $dbname;
    }
 
    /**
     * 設定資料庫編碼
     * @param  $charset
     */
    public static function setcharset($charset) {
        if (isset($charset) && strlen($charset) > 0)
            self::$charset = $charset;
    }
 
}
 
/**
 * 一個資料庫操作工具類
 *
 * @author zhjiun@gmail.com 
 */
class dbtemplate {
 
    /**
     * 返回多行記錄
     * @param  $sql
     * @param  $parameters
     * @return  記錄資料
     */
    public function queryrows($sql, $parameters = null) {
        return $this->exequery($sql, $parameters);
    }
 
    /**
     * 返回為單條記錄
     * @param  $sql
     * @param  $parameters
     * @return
     */
    public function queryrow($sql, $parameters = null) {
        $rs = $this->exequery($sql, $parameters);
        if (count($rs) > 0) {
            return $rs[0];
        } else {
            return null;
        }
    }
 
    /**
     * 查詢單欄位,返回整數
     * @param  $sql
     * @param  $parameters
     * @return
     */
    public function queryforint($sql, $parameters = null) {
        $rs = $this->exequery($sql, $parameters);
        if (count($rs) > 0) {
            return intval($rs[0][0]);
        } else {
            return null;
        }
    }
 
    /**
     * 查詢單欄位,返回浮點數(float)
     * @param  $sql
     * @param  $parameters
     * @return
     */
    public function queryforfloat($sql, $parameters = null) {
        $rs = $this->exequery($sql, $parameters);
        if (count($rs) > 0) {
            return floatval($rs[0][0]);
        } else {
            return null;
        }
    }
 
    /**
     * 查詢單欄位,返回浮點數(double)
     * @param  $sql
     * @param  $parameters
     * @return
     */
    public function queryfordouble($sql, $parameters = null) {
        $rs = $this->exequery($sql, $parameters);
        if (count($rs) > 0) {
            return doubleval($rs[0][0]);
        } else {
            return null;
        }
    }
 
    /**
     * 查詢單欄位,返回對象,實際類型有資料庫決定
     * @param  $sql
     * @param  $parameters
     * @return
     */
    public function queryforobject($sql, $parameters = null) {
        $rs = $this->exequery($sql, $parameters);
        if (count($rs) > 0) {
            return $rs[0][0];
        } else {
            return null;
        }
    }
 
    /**
     * 執行一條更新語句.insert / upadate / delete
     * @param  $sql
     * @param  $parameters
     * @return  影響行數
     */
    public function update($sql, $parameters = null) {
        return $this->exeupdate($sql, $parameters);
    }
 
    private function getconnection() {
        $conn = new pdo(dbconfig::getdsn(), dbconfig::getusername(), dbconfig::getpassword());
        $conn->setattribute(pdo::attr_case, pdo::case_upper);
        return $conn;
    }
 
    private function exequery($sql, $parameters = null) {
        $conn = $this->getconnection();
        $stmt = $conn->prepare($sql);
        $stmt->execute($parameters);
        $rs = $stmt->fetchall();
        $stmt = null;
        $conn = null;
        return $rs;
    }
 
    private function exeupdate($sql, $parameters = null) {
        $conn = $this->getconnection();
        $stmt = $conn->prepare($sql);
        $stmt->execute($parameters);
        $affectedrows = $stmt->rowcount();
        $stmt = null;
        $conn = null;
        return $affectedrows;
    }
}

pdo始於php5,php6中將預設使用pdo,不同於以前版本中混亂的資料庫操作方式,pdo統一了對資料庫的訪問方式,給編程帶來了極大的便利性,本工具類就是基於pdo,類比了java世界spring架構中的jdbctemplate操作類.

希望本文所述對大家的PHP程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.