1. 程式人生 > >一個關於php使用pdo方式進行資料庫連線和處理的類

一個關於php使用pdo方式進行資料庫連線和處理的類

話不多說,先貼程式碼

<?php 
/**
	@DB Operates For PDO
	@author:MeeeeN
	@date:2015-10-22 22:40:32
**/

	//定義資料庫資訊
	
	header("Content-type:text/html; charset=utf-8");

	define('DB_HOST', 'localhost');
	define('DB_USER', 'root');
	define('DB_PWD', '');
	define('DB_NAME', 'lesson');

	class DBPDO {

		private static $instance;       
    	public $dsn;       
    	public $dbuser;       
    	public $dbpwd;       
    	public $sth;       
    	public $dbh; 

    	//初始化
		function __construct() {
			$this->dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME;
			$this->dbuser = DB_USER;
			$this->dbpwd = DB_PWD;
			$this->connect();
			$this->dbh->query("SET NAMES 'UTF8'");
			$this->dbh->query("SET TIME_ZONE = '+8:00'");
		}

		//連線資料庫
		public function connect() {
			try {
				$this->dbh = new PDO($this->dsn, $this->dbuser, $this->dbpwd);
			}
			catch(PDOException $e) {
				exit('連線失敗:'.$e->getMessage());
			}
		}

		//獲取表字段
		public function getFields($table='vista_order') {
			$this->sth = $this->dbh->query("DESCRIBE $table");
			$this->getPDOError();
			$this->sth->setFetchMode(PDO::FETCH_ASSOC);
			$result = $this->sth->fetchAll();
			$this->sth = null;
			return $result;
		}

		//插入資料
		public function insert($sql) {
			if($this->dbh->exec($sql)) {
				$this->getPDOError();
				return $this->dbh->lastInsertId();
			}
			return false;
		}

		//刪除資料
		public function delete($sql) {
			if(($rows = $this->dbh->exec($sql)) > 0) {
				$this->getPDOError();
				return $rows;
			}
			else {
				return false;
			}
		}

		//更改資料
		public function update($sql) {
			if(($rows = $this->dbh->exec($sql)) > 0) {
				$this->getPDOError();
				return $rows;
			}
			return false;
		}

		//獲取資料
		public function select($sql) {
			$this->sth = $this->dbh->query($sql);
			$this->getPDOError();
			$this->sth->setFetchMode(PDO::FETCH_ASSOC);
			$result = $this->sth->fetchAll();
			$this->sth = null;
			return $result;
		}

		//獲取數目
		public function count($sql) {
			$count = $this->dbh->query($sql);
			$this->getPDOError();
			return $count->fetchColumn();
		}

		//獲取PDO錯誤資訊
		private function getPDOError() {
			if($this->dbh->errorCode() != '00000') {
				$error = $this->dbh->errorInfo();
				exit($error[2]);
			}
		}

		//關閉連線
		public function __destruct() {
			$this->dbh = null;
		}
	}

	//eg: an example for operate select

	$test = new DBPDO;

	$sql = "SELECT * FROM `vista_order` WHERE `id`!=100 ";

	$rs = $test->select($sql);

	print_r($rs);
	




?>

這是之前研究了一段時間pdo後所寫出來的一個pdo資料庫相關操作類(比較懶,一直沒更新部落格),參考了一些網上的相關文章,但是感覺很多要麼寫得有錯誤,要麼很囉嗦,所以自己搞了個,其實本來我是一直是用mysql類連線的,但是升級了php版本後發現不支援mysql方式連線了,又感覺mysqli比較囉嗦,所以索性改為用pdo,其實基本功能來說的話,這個類中construct,connection,destruct三個function就足夠了,不過方便快速使用的話還是多寫了一些function,個人感覺這個類的可移植性還是蠻高的,最後有使用的例子,基本上引用DBPDO類之後,只要自己寫好sql語句,增刪改查就都可以實現了