首頁 後端開發 php教程 PHP中如何對資料庫操作的封裝

PHP中如何對資料庫操作的封裝

Aug 08, 2016 am 09:33 AM
case gt nbsp test

php中資料庫操作的封裝

在動態網面設計中很多都要涉及到對資料庫的操作,但是有時跟據需要而改用其它後台資料庫,就需要大量修改程式。這是一件枯燥、費時而且容易出錯的功作。其實我們可以用PHP中的類別來實現對資料庫操作的封裝,從而使寫出的程式在很小的改動下就可以完成後台資料庫的變更。
  現在我們把其封裝在dbfz.inc中,其設計如下:


class dbInterface{ var $dbID=1; //用來決定目前作業的資料庫,當dbID為1代表MySQL,當為 2代表 SQL Server,為3時為ODBC或其它。
var $dbHost; //資料庫所在主機網域名稱
var $dbUsername; //資料庫使用者名稱
var $dbPassWord; //使用者密碼
//設定主機、使用者名稱及密碼函數
function setParameter($host,$username,$password){
$this->dbUsername=$username;
$this->dbHost=$host;
$this->dbPassword=$password;

} //聯接函數函數
function dbConnect(){
switch($this->dbID)
{
case 1;
return @mysql_connect($this->dbHost,$this->dbUsername,$this->dbPassword);
case 2;
//用支援SQL Server的函數
case 3;
//用支援ODBC的函數
}  
}
//關閉數庫函數
function dbClos​​e($dataHandle){
switch($this->dbID)
{
case 1;
mysql_close($dataHandle);
case 2;
//用支援SQL Server的函數
case 3;
//用支援ODBC的函數
}  
}

//執行SQL語句函數
function dbQuery($dbName,$sql,$dbHandle){
switch($this->dbID)
{
case 1;
return @mysql_db_query($dbName,$sql,$dbHandle);
case 2;
//用支援SQL Server的函數
case 3;
//用支援ODBC的函數
}  
}

//檢索SQL回傳值的目前記錄函數
function dbFetchrow($dataHandle,$offset=-1){
switch($this->dbID)
{
case 1;
@mysql_data_seek($dataHandle,$offset);
return @mysql_fetch_row($dataHandle);
case 2;
//用支援SQL Server的函數
case 3;
//用支援ODBC的函數
}  
}

//傳回檢索記錄函數
function dbNumrows($dataHandle){
switch($this->dbID)
{
case 1;
return @mysql_num_rows($dataHandle);
case 2;
//用支援SQL Server的函數
case 3;
//用支援ODBC的函數
}  
}

//傳回檢索列數函數
function dbNumcols($dataHandle){
switch($this->dbID)
{
case 1;
return @mysql_num_fields($dataHandle);
case 2;
//用支援SQL Server的函數
case 3;
//用支援ODBC的函數
}  
}
}

現把使用說明如下:

  在程式中用dbInterface類別生一個物件$test=new dbInterface;

設定參數
test->$dbUsername ;使用者名稱
test->$dbPassword;密碼
test->$dbHost;主機
void setParameter(string host, string username, string password);

資料庫連線:dbhandle test->dbConnect();

傳回值:fasle ,資料庫連線錯誤
>0, 資料庫連線句柄

資料庫關閉:void test->dbClos​​e(dbhandle);

表運算:int test->dbQuery(string databasename, string sql,dbhandle);執行SQL語句

傳回值: false, SQL執行錯誤
>0, SQL執行正確, 同時指向SQL回傳值,

資料操作:int test->dbFetchrow(dataHandle,int offset);檢索SQL回傳值的目前記錄,成功執行後,指標移向下一筆記錄
int test->dbNumrows(dataHandle); 取得SQL執行後(主要為SELECT語句)所獲得的記錄數
int test->dbNumcols(dataHandle); 取得SQL執行後(主要為SELECT語句)所獲得的記錄字段數

現在我們發一個例了講解:

  資料庫採用MQSQL:其主機名稱為 "localhost",使用者名稱為"root"和密碼""。
在mysql中有一個testdb資料庫及其中的表table1,表格包括:name和pay兩個欄位

-----


test

require("testdb.inc"); //載入dbInterface類別
$test = new dbInterface;//用類別dbInterface產生一個物件
$test->setParameter("localhost","root","");//設定資料庫參數
$db = $test->dbConnect();//連接資料庫
$Query = "SELECT name,pay FROM table ";//設定SQL語句
$temp_result = $test->dbQuery("testdb",$Query,$db);//執行資料主庫作業
echo "
";
$ls_num = $test->dbNumrows($temp_result); //取得查詢結果的記錄數
echo $ls_num;
echo "
";
if (ls_num>0 )
{
$ls_col = $test->dbNumcols($db); //取得表格的列數
echo $ls_col;  
echo "
";
$cate_result=$test->dbFetchrow($temp_result,0);//取得記錄數的第一行
$hcid=$cate_result[0];// 取得name的值
$hcate=$cate_result[1];//取得pay的值
echo $hcid;
echo "
";
echo $hcate;
}

?>  





  這就是一個簡單的應用封裝的類別來完成對資料庫的操作。如果要操作其它資料庫只需要修改dbInterface類別中的dbID變數即可.

以上就介紹了PHP如何對資料庫操作的封裝,包括了方面的內容,希望對PHP教學有興趣的朋友有幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

華為Watch GT 5智慧手錶獲得新功能更新 華為Watch GT 5智慧手錶獲得新功能更新 Oct 03, 2024 am 06:25 AM

華為正在全球推出Watch GT 5和Watch GT 5 Pro智慧手錶的軟體版本5.0.0.100(C00M01)。這兩款智慧手錶最近在歐洲推出,標準型號是該公司最便宜的型號。這和諧

鐵拳桑德斯上校的夢想被肯德基炸了 鐵拳桑德斯上校的夢想被肯德基炸了 Oct 02, 2024 am 06:07 AM

《鐵拳》系列總監原田勝宏曾認真嘗試將桑德斯上校帶入這款標誌性格鬥遊戲中。在接受 TheGamer 採訪時,原田透露,他向日本肯德基提出了這個想法,希望將這位快餐傳奇人物納入其中。

Cyber​​truck FSD 評論稱讚快速車道切換和全螢幕視覺化 Cyber​​truck FSD 評論稱讚快速車道切換和全螢幕視覺化 Oct 01, 2024 am 06:16 AM

特斯拉正在推出最新的全自動駕駛(監督)版本12.5.5,並最終帶來了承諾的Cyber​​truck FSD 選項,距離皮卡上市十個月後,該功能包含在基礎系列的裝飾價格中。 F

Garmin 透過新的更新發布了針對多款智慧手錶的冒險賽車活動改進 Garmin 透過新的更新發布了針對多款智慧手錶的冒險賽車活動改進 Oct 01, 2024 am 06:40 AM

Garmin 將於本月底為其最新的高階智慧手錶提供一組新的穩定更新。回顧一下,該公司發布了系統軟體 11.64,以解決 Enduro 3、Fenix E 和 Fenix 8 的高電池消耗問題(亞馬遜售價 1,099.99 美元)。

搭載 HyperOS 的新款小米米家石墨烯油汀到貨 搭載 HyperOS 的新款小米米家石墨烯油汀到貨 Oct 02, 2024 pm 09:02 PM

小米即將在中國推出米家石墨烯油汀暖爐。該公司最近在其優品平台上成功舉辦了一次智慧家居產品眾籌活動。根據頁面顯示,該設備已開始出貨至

第一眼:即將推出的 Anker Zolo 4 連接埠 140W 帶顯示壁式充電器的拆箱視訊洩露 第一眼:即將推出的 Anker Zolo 4 連接埠 140W 帶顯示壁式充電器的拆箱視訊洩露 Oct 01, 2024 am 06:32 AM

2024 年 9 月早些時候,Anker 的 Zolo 140W 充電器被洩露,這是該公司首款帶有顯示器的壁式充電器,這引起了轟動。現在,小李TV在YouTube上發布的新開箱影片讓我們親眼目睹了這款hi

三星 Galaxy Z Fold 特別版透露將於 10 月底登陸,但名稱出現衝突 三星 Galaxy Z Fold 特別版透露將於 10 月底登陸,但名稱出現衝突 Oct 01, 2024 am 06:21 AM

三星期待已久的「特別版」可折疊手機的推出又迎來了另一個轉折。最近幾週,有關所謂 Galaxy Z Fold 特別版的傳言相當安靜。相反,焦點已轉移到 Galaxy S25 系列,包括

Manjaro 24.1「Xahea」與 KDE Plasma 6.1.5、VirtualBox 7.1 等一起發布 Manjaro 24.1「Xahea」與 KDE Plasma 6.1.5、VirtualBox 7.1 等一起發布 Oct 02, 2024 am 06:06 AM

Manjaro 已有十多年的歷史,被認為是最用戶友好的 Linux 發行版之一,適合初學者和高級用戶,易於安裝和使用。這個基於 Arch 的發行版主要在奧地利、德國和法國開發

See all articles