《PHP教程:PHP實現PDO的mysql數據庫操作類》要點:
本文介紹了PHP教程:PHP實現PDO的mysql數據庫操作類,希望對您有用。如果有疑問,可以聯系我們。
本文實例講述了PHP實現PDO的mysql數據庫操作類.分享給大家供大家參考.具體分析如下:PHP編程
dbconfig類負責配置數據庫訪問信息,包括:服務器地址、端口、數據庫實例名、用戶名、用戶暗碼、字符集等.PHP編程
dbtemplate類集合了對數據庫的訪問操作,主要有以下幾個操作:PHP編程
1. queryrows:返回多行記錄PHP編程
2. queryrow:返回為單條記錄PHP編程
3. queryforint:查詢單字段,返回整數PHP編程
4. queryforfloat:查詢單字段,返回浮點數(float)PHP編程
5. queryfordouble:查詢單字段,返回浮點數(double)PHP編程
6. queryforobject:查詢單字段,返回對象,實際類型有數據庫決定PHP編程
7. update : 執行一條更新語句. insert / upadate / deletePHP編程
具體代碼如下:
PHP編程
代碼如下:
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程序設計有所幫助.PHP編程
歡迎參與《PHP教程:PHP實現PDO的mysql數據庫操作類》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/13406.html