日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP中对数据库操作的封装

發(fā)布時間:2025/7/25 php 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP中对数据库操作的封装 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?? 在動態(tài)網(wǎng)面設(shè)計中很多都要涉及到對數(shù)據(jù)庫的操作,但是有時跟據(jù)需要而改用其它后臺數(shù)據(jù)庫,就需要大量修改程序。這是一件枯燥、費時而且容易出錯的功作。其實我們可以用PHP中的類來實現(xiàn)對數(shù)據(jù)庫操作的封裝,從而使寫出的程序在很小的改動下就可以完成后臺數(shù)據(jù)庫的更改。

<? class dbInterface{ var $dbID=1; //用于確定當(dāng)前操作的數(shù)據(jù)庫,當(dāng)dbID為1代表MySql,當(dāng)為 2代表 SQL Server,為3時為ODBC或其它。 var $dbHost; //數(shù)據(jù)庫所在主機域名 var $dbUsername; //數(shù)據(jù)庫用戶名 var $dbPassword; //用戶密碼 //設(shè)置主機、用戶名及密碼函數(shù) function setParameter($host,$username,$password){ $this->dbUsername=$username; $this->dbHost=$host; $this->dbPassword=$password;} //聯(lián)接數(shù)庫函數(shù) function dbConnect(){ switch($this->dbID) { case 1; return @mysql_connect($this->dbHost,$this->dbUsername,$this->dbPassword); case 2; //用支持SQL Server的函數(shù) case 3; //用支持ODBC的函數(shù) } } //關(guān)閉數(shù)庫函數(shù) function dbClose($dataHandle){ switch($this->dbID) { case 1; mysql_close($dataHandle); case 2; //用支持SQL Server的函數(shù) case 3; //用支持ODBC的函數(shù) } }//執(zhí)行SQL語句函數(shù) function dbQuery($dbName,$sql,$dbHandle){ switch($this->dbID) { case 1; return @mysql_db_query($dbName,$sql,$dbHandle); case 2; //用支持SQL Server的函數(shù) case 3; //用支持ODBC的函數(shù) } }//檢索SQL返回值的當(dāng)前記錄函數(shù) function dbFetchrow($dataHandle,$offset=-1){ switch($this->dbID) { case 1; @mysql_data_seek($dataHandle,$offset); return @mysql_fetch_row($dataHandle); case 2; //用支持SQL Server的函數(shù) case 3; //用支持ODBC的函數(shù) } }//返回檢索記錄數(shù)函數(shù) function dbNumrows($dataHandle){ switch($this->dbID) { case 1; return @mysql_num_rows($dataHandle); case 2; //用支持SQL Server的函數(shù) case 3; //用支持ODBC的函數(shù) } }//返回檢索列數(shù)函數(shù) function dbNumcols($dataHandle){ switch($this->dbID) { case 1; return @mysql_num_fields($dataHandle); case 2; //用支持SQL Server的函數(shù) case 3; //用支持ODBC的函數(shù) } } }

?現(xiàn)把使用說明如下:

  在程序中用dbInterface類生一個對象$test=new dbInterface;

設(shè)置參數(shù)
test->$dbUsername ;用戶名
test->$dbPassword;密碼
test->$dbHost;主機
void setParameter(string host, string username, string password);

數(shù)據(jù)庫連接:dbhandle test->dbConnect();

返回值:fasle ,數(shù)據(jù)庫連接錯誤
>0, 數(shù)據(jù)庫連接句柄

數(shù)據(jù)庫關(guān)閉:void test->dbClose(dbhandle);

表操作:int test->dbQuery(string databasename, string sql,dbhandle);執(zhí)行SQL語句

返回值: false, SQL執(zhí)行錯誤
>0, SQL執(zhí)行正確, 同時指向SQL返回值,

數(shù)據(jù)操作:int test->dbFetchrow(dataHandle,int offset);檢索SQL返回值的當(dāng)前記錄,成功執(zhí)行后,指針移向下一條記錄
int test->dbNumrows(dataHandle); 取得SQL執(zhí)行后(主要為SELECT語句)獲得的記錄數(shù)
int test->dbNumcols(dataHandle); 取得SQL執(zhí)行后(主要為SELECT語句)獲得的記錄字段數(shù)

現(xiàn)在我們發(fā)一個例了講解:

  數(shù)據(jù)庫采用MQSQL:其主機名為 "localhost",用戶名為"root"和密碼""。

----- <HTML><HEAD> <TITLE>test</TITLE> </HEAD><BODY> <P> <?php require("testdb.inc"); //裝載dbInterface類 $test = new dbInterface;//用類dbInterface生成一個對象 $test->setParameter("localhost","root","");//設(shè)置數(shù)據(jù)庫參數(shù) $db = $test->dbConnect();//連接數(shù)據(jù)庫 $Query = "SELECT name,pay FROM table ";//設(shè)置SQL語句 $temp_result = $test->dbQuery("testdb",$Query,$db);//執(zhí)行數(shù)據(jù)主庫操作 echo "<br>"; $ls_num = $test->dbNumrows($temp_result); //取得查詢結(jié)果的記錄數(shù) echo $ls_num; echo "<br>"; if (ls_num>0 ) { $ls_col = $test->dbNumcols($db); //取得表的列數(shù) echo $ls_col; echo "<br>"; $cate_result=$test->dbFetchrow($temp_result,0);//取得記錄數(shù)的第一行 $hcid=$cate_result[0];// 取得name的值 $hcate=$cate_result[1];//取得pay的值 echo $hcid; echo "<br>"; echo $hcate; }?> <HR> <ADDRESS></ADDRESS> </BODY></HTML>

?


在mysql中有一個testdb數(shù)據(jù)庫及其中的表table1,表包括:name和pay兩個字段

php封裝一個class類實現(xiàn)mysql數(shù)據(jù)庫的增刪該查

<?php Class DB {private $link_id;private $handle;private $is_log;private $time;//構(gòu)造函數(shù)public function __construct() {$this->time = $this->microtime_float();require_once("config.db.php");$this->connect($db_config["hostname"], $db_config["username"], $db_config["password"], $db_config["database"], $db_config["pconnect"]);$this->is_log = $db_config["log"];if($this->is_log){$handle = fopen($db_config["logfilepath"]."dblog.txt", "a+");$this->handle=$handle;}}//數(shù)據(jù)庫連接public function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0,$charset='utf8') {if( $pconnect==0 ) {$this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);if(!$this->link_id){$this->halt("數(shù)據(jù)庫連接失敗");}} else {$this->link_id = @mysql_pconnect($dbhost, $dbuser, $dbpw);if(!$this->link_id){$this->halt("數(shù)據(jù)庫持久連接失敗");}}if(!@mysql_select_db($dbname,$this->link_id)) {$this->halt('數(shù)據(jù)庫選擇失敗');}@mysql_query("set names ".$charset);}//查詢 public function query($sql) {$this->write_log("查詢 ".$sql);$query = mysql_query($sql,$this->link_id);if(!$query) $this->halt('Query Error: ' . $sql);return $query;}//獲取一條記錄(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH) public function get_one($sql,$result_type = MYSQL_ASSOC) {$query = $this->query($sql);$rt =& mysql_fetch_array($query,$result_type);$this->write_log("獲取一條記錄 ".$sql);return $rt;}//獲取全部記錄public function get_all($sql,$result_type = MYSQL_ASSOC) {$query = $this->query($sql);$i = 0;$rt = array();while($row =& mysql_fetch_array($query,$result_type)) {$rt[$i]=$row;$i++;}$this->write_log("獲取全部記錄 ".$sql);return $rt;}//插入public function insert($table,$dataArray) {$field = "";$value = "";if( !is_array($dataArray) || count($dataArray)<=0) {$this->halt('沒有要插入的數(shù)據(jù)');return false;}while(list($key,$val)=each($dataArray)) {$field .="$key,";$value .="'$val',";}$field = substr( $field,0,-1);$value = substr( $value,0,-1);$sql = "insert into $table($field) values($value)";$this->write_log("插入 ".$sql);if(!$this->query($sql)) return false;return true;}//更新public function update( $table,$dataArray,$condition="") {if( !is_array($dataArray) || count($dataArray)<=0) {$this->halt('沒有要更新的數(shù)據(jù)');return false;}$value = "";while( list($key,$val) = each($dataArray))$value .= "$key = '$val',";$value .= substr( $value,0,-1);$sql = "update $table set $value where 1=1 and $condition";$this->write_log("更新 ".$sql);if(!$this->query($sql)) return false;return true;}//刪除public function delete( $table,$condition="") {if( empty($condition) ) {$this->halt('沒有設(shè)置刪除的條件');return false;}$sql = "delete from $table where 1=1 and $condition";$this->write_log("刪除 ".$sql);if(!$this->query($sql)) return false;return true;}//返回結(jié)果集public function fetch_array($query, $result_type = MYSQL_ASSOC){$this->write_log("返回結(jié)果集");return mysql_fetch_array($query, $result_type);}//獲取記錄條數(shù)public function num_rows($results) {if(!is_bool($results)) {$num = mysql_num_rows($results);$this->write_log("獲取的記錄條數(shù)為".$num);return $num;} else {return 0;}}//釋放結(jié)果集public function free_result() {$void = func_get_args();foreach($void as $query) {if(is_resource($query) && get_resource_type($query) === 'mysql result') {return mysql_free_result($query);}}$this->write_log("釋放結(jié)果集");}//獲取最后插入的idpublic function insert_id() {$id = mysql_insert_id($this->link_id);$this->write_log("最后插入的id為".$id);return $id;}//關(guān)閉數(shù)據(jù)庫連接protected function close() {$this->write_log("已關(guān)閉數(shù)據(jù)庫連接");return @mysql_close($this->link_id);}//錯誤提示private function halt($msg='') {$msg .= "\r\n".mysql_error();$this->write_log($msg);die($msg);}//析構(gòu)函數(shù)public function __destruct() {$this->free_result();$use_time = ($this-> microtime_float())-($this->time);$this->write_log("完成整個查詢?nèi)蝿?wù),所用時間為".$use_time);if($this->is_log){fclose($this->handle);}}//寫入日志文件public function write_log($msg=''){if($this->is_log){$text = date("Y-m-d H:i:s")." ".$msg."\r\n";fwrite($this->handle,$text);}}//獲取毫秒數(shù)public function microtime_float() {list($usec, $sec) = explode(" ", microtime());return ((float)$usec + (float)$sec);} }?>

?

<?php Class DB {private $link_id;private $handle;private $is_log;private $time;//構(gòu)造函數(shù)public function __construct() {$this->time = $this->microtime_float();require_once("config.db.php");$this->connect($db_config["hostname"], $db_config["username"], $db_config["password"], $db_config["database"], $db_config["pconnect"]);$this->is_log = $db_config["log"];if($this->is_log){$handle = fopen($db_config["logfilepath"]."dblog.txt", "a+");$this->handle=$handle;}}//數(shù)據(jù)庫連接public function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0,$charset='utf8') {if( $pconnect==0 ) {$this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);if(!$this->link_id){$this->halt("數(shù)據(jù)庫連接失敗");}} else {$this->link_id = @mysql_pconnect($dbhost, $dbuser, $dbpw);if(!$this->link_id){$this->halt("數(shù)據(jù)庫持久連接失敗");}}if(!@mysql_select_db($dbname,$this->link_id)) {$this->halt('數(shù)據(jù)庫選擇失敗');}@mysql_query("set names ".$charset);}//查詢 public function query($sql) {$this->write_log("查詢 ".$sql);$query = mysql_query($sql,$this->link_id);if(!$query) $this->halt('Query Error: ' . $sql);return $query;}//獲取一條記錄(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH) public function get_one($sql,$result_type = MYSQL_ASSOC) {$query = $this->query($sql);$rt =& mysql_fetch_array($query,$result_type);$this->write_log("獲取一條記錄 ".$sql);return $rt;}//獲取全部記錄public function get_all($sql,$result_type = MYSQL_ASSOC) {$query = $this->query($sql);$i = 0;$rt = array();while($row =& mysql_fetch_array($query,$result_type)) {$rt[$i]=$row;$i++;}$this->write_log("獲取全部記錄 ".$sql);return $rt;}//插入public function insert($table,$dataArray) {$field = "";$value = "";if( !is_array($dataArray) || count($dataArray)<=0) {$this->halt('沒有要插入的數(shù)據(jù)');return false;}while(list($key,$val)=each($dataArray)) {$field .="$key,";$value .="'$val',";}$field = substr( $field,0,-1);$value = substr( $value,0,-1);$sql = "insert into $table($field) values($value)";$this->write_log("插入 ".$sql);if(!$this->query($sql)) return false;return true;}//更新public function update( $table,$dataArray,$condition="") {if( !is_array($dataArray) || count($dataArray)<=0) {$this->halt('沒有要更新的數(shù)據(jù)');return false;}$value = "";while( list($key,$val) = each($dataArray))$value .= "$key = '$val',";$value .= substr( $value,0,-1);$sql = "update $table set $value where 1=1 and $condition";$this->write_log("更新 ".$sql);if(!$this->query($sql)) return false;return true;}//刪除public function delete( $table,$condition="") {if( empty($condition) ) {$this->halt('沒有設(shè)置刪除的條件');return false;}$sql = "delete from $table where 1=1 and $condition";$this->write_log("刪除 ".$sql);if(!$this->query($sql)) return false;return true;}//返回結(jié)果集public function fetch_array($query, $result_type = MYSQL_ASSOC){$this->write_log("返回結(jié)果集");return mysql_fetch_array($query, $result_type);}//獲取記錄條數(shù)public function num_rows($results) {if(!is_bool($results)) {$num = mysql_num_rows($results);$this->write_log("獲取的記錄條數(shù)為".$num);return $num;} else {return 0;}}//釋放結(jié)果集public function free_result() {$void = func_get_args();foreach($void as $query) {if(is_resource($query) && get_resource_type($query) === 'mysql result') {return mysql_free_result($query);}}$this->write_log("釋放結(jié)果集");}//獲取最后插入的idpublic function insert_id() {$id = mysql_insert_id($this->link_id);$this->write_log("最后插入的id為".$id);return $id;}//關(guān)閉數(shù)據(jù)庫連接protected function close() {$this->write_log("已關(guān)閉數(shù)據(jù)庫連接");return @mysql_close($this->link_id);}//錯誤提示private function halt($msg='') {$msg .= "\r\n".mysql_error();$this->write_log($msg);die($msg);}//析構(gòu)函數(shù)public function __destruct() {$this->free_result();$use_time = ($this-> microtime_float())-($this->time);$this->write_log("完成整個查詢?nèi)蝿?wù),所用時間為".$use_time);if($this->is_log){fclose($this->handle);}}//寫入日志文件public function write_log($msg=''){if($this->is_log){$text = date("Y-m-d H:i:s")." ".$msg."\r\n";fwrite($this->handle,$text);}}//獲取毫秒數(shù)public function microtime_float() {list($usec, $sec) = explode(" ", microtime());return ((float)$usec + (float)$sec);} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/zoubizhici/p/5585724.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的PHP中对数据库操作的封装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。