php でのデータベース操作のカプセル化
動的 Web デザインの多くの側面にはデータベース操作が含まれますが、必要に応じて他のバックエンド データベースに切り替えるには、大量のプログラムの変更が必要になる場合があります。これは面倒で時間がかかり、エラーが発生しやすい作業です。実際、PHP のクラスを使用してデータベース操作をカプセル化できるため、作成されたプログラムは非常に小さな変更でバックグラウンド データベースへの変更を完了できます。
これを dbfz.inc にカプセル化し、そのデザインは次のようになります:
class dbInterface{ var $dbID=1; //現在の操作のデータベースを決定するために使用されます。dbID が 1 の場合は MySQL を表し、2 の場合は SQL Server を表し、3 の場合は ODBC を表します。その他。
var $dbHost; //データベースが配置されているホストのドメイン名
var $dbUsername //データベースのユーザー名
var $dbPassWord //ユーザーのパスワード
//ホスト、ユーザー名、パスワード関数を設定します
関数 setParameter($host,$username,$password){
$this->dbUsername=$ユーザー名
$this->dbHost=$host;
$this->dbPassword=$パスワード
} //データベース関数に参加します
関数 dbConnect(){
スイッチ($this->dbID)
{
ケース 1;
return @mysql_connect($this->dbHost,$this->dbUsername,$this->dbPassword);
ケース 2;
//SQL Server をサポートする関数を使用します
ケース 3;
//ODBCをサポートする関数を使用する
}
}
//ライブラリ関数を閉じる
関数 dbClose($dataHandle){
スイッチ($this->dbID)
{
ケース 1;
mysql_close($dataHandle);
ケース 2;
//SQL Server をサポートする関数を使用します
ケース 3;
//ODBCをサポートする関数を使用する
}
}
//SQL文関数を実行
関数 dbQuery($dbName,$sql,$dbHandle){
スイッチ($this->dbID)
{
ケース 1;
@mysql_db_query($dbName,$sql,$dbHandle) を返します
ケース 2;
//SQL Server をサポートする関数を使用します
ケース 3;
//ODBCをサポートする関数を使用する
}
}
//SQL戻り値のカレントレコード関数を取得します
関数 dbFetchrow($dataHandle,$offset=-1){
スイッチ($this->dbID)
{
ケース 1;
@mysql_data_seek($dataHandle,$offset);
@mysql_fetch_row($dataHandle) を返します
ケース 2;
//SQL Server をサポートする関数を使用します
ケース 3;
//ODBCをサポートする関数を使用する
}
}
//取得したレコード番号関数を返す
関数 dbNumrows($dataHandle){
スイッチ($this->dbID)
{
ケース 1;
@mysql_num_rows($dataHandle) を返します
ケース 2;
//SQL Server をサポートする関数を使用します
ケース 3;
//ODBCをサポートする関数を使用する
}
}
//列数を取得する関数を返す
関数 dbNumcols($dataHandle){
スイッチ($this->dbID)
{
ケース 1;
@mysql_num_fields($dataHandle) を返します
ケース 2;
//SQL Server をサポートする関数を使用します
ケース 3;
//ODBCをサポートする関数を使用する
}
}
}
使用説明書は次のとおりです:
dbInterface クラスを使用して、プログラム $test=new dbInterface; にオブジェクトを生成します。
パラメータを設定します
テスト->$dbユーザー名 ;ユーザー名
テスト->$dbパスワード
テスト->$dbHost;ホスト
void setParameter(文字列ホスト、文字列ユーザー名、文字列パスワード);
データベース接続: dbhandle test->dbConnect();
戻り値: fasle、データベース接続エラー
>0、データベース接続ハンドル
データベースを閉じる: void test->dbClose(dbhandle);
テーブル操作: int test->dbQuery(string データベース名, string sql, dbhandle); SQL ステートメントを実行します
戻り値: false、SQL実行エラー
>0、SQL は正しく実行され、SQL 戻り値を指します。
データ操作: int test->dbFetchrow(dataHandle, int offset); 実行が成功すると、ポインターは次のレコードに移動します。
int test->dbNumrows(dataHandle); SQL(主にSELECT文)実行後に取得したレコード数を取得します
int test->dbNumcols(dataHandle); SQL実行(主にSELECT文)後に取得したレコードフィールド数を取得します
ここで例を挙げて説明します:
データベースは MQSQL を使用します。ホスト名は「localhost」、ユーザー名は「root」、パスワードは「」です。
mysql には testdb データベースと table1 があり、このテーブルには name と pay の 2 つのフィールドが含まれています。
-----
<ヘッド>
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); //データマスターデータベース操作を実行します
エコー "
";
$ls_num = $test->dbNumrows($temp_result) //クエリ結果のレコード数を取得します
$ls_num をエコーします。
エコー "
";
if (ls_num>0 )
{
$ls_col = $test->dbNumcols($db) //テーブル内の列数を取得します
;
エコー $ls_col
エコー "
";
$cate_result=$test->dbFetchrow($temp_result,0);//レコード番号の最初の行を取得します
$hcid=$cate_result[0];//name の値を取得します
$hcate=$cate_result[1];//支払いの値を取得します
エコー $hcid
エコー「
」;
$hcate をエコーします。
}
?>
<アドレス>アドレス>
これは、データベースの操作を完了するための単純なアプリケーションのカプセル化クラスです。他のデータベースを操作したい場合は、dbInterface クラスの dbID 変数を変更するだけです。
上記では、PHP でデータベース操作をカプセル化する方法をさまざまな側面を含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。