PHP でのデータベース操作のカプセル化
動的 Web デザインの多くの側面にはデータベース操作が含まれますが、必要に応じて他のバックグラウンド データベースが使用される場合、大量のプログラムの変更が必要になる場合があります。これは面倒で時間がかかり、エラーが発生しやすい作業です。実際、PHP のクラスを使用してデータベース操作をカプセル化できるため、作成されたプログラムは非常に小さな変更でバックグラウンド データベースへの変更を完了できます。
これを dbfz.inc にカプセル化し、その設計は次のようになります:
class dbInterface{ var $dbID=1; //dbID が 1 の場合、それは現在の操作のデータベースを決定するために使用されます。 MySql は、2 の場合は MySql を表し、3 の場合は ODBC などを表します。
var $dbHost; //データベースが配置されているホストのドメイン名
var $dbUsername; //データベースのユーザー名
var $dbPassword; //ホスト、ユーザー名、パスワードの関数を設定します
function setParameter($host,$username ,$password){
$this->dbUsername=$username;
$this->dbPassword=$password;
}ライブラリ関数
function dbConnect( ){
switch($this->dbID)
{
return @mysql_connect($this->dbHost,$this->dbUsername,$this->dbPassword) ;
case 2;
//SQL Server をサポートする関数を使用する
case 3;
//ODBC をサポートする関数を使用する
}
}
//データベース関数を閉じる
function dbClose($dataHandle){
switch($this ->dbID)
{
case 1;
mysql_close($dataHandle);
//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)
{
@mysql_data_seek($dataHandle,$offset);
return @mysql_fetch_row($dataHandle);
// support SQL Server
case 3;
//ODBC をサポートする関数を使用します
}
}
//レコード数を取得する関数を返します
function dbNumrows($dataHandle){
switch($this->dbID)
{
case 1;
return @mysql_num_rows($ dataHandle);
//SQL Server をサポートする関数を使用する
case 3;
//ODBC をサポートする関数を使用する
}
//列の数を取得する
function dbNumcols($dataHandle){
switch ($this->dbID)
{
case 1;
return @mysql_num_fields($dataHandle)
//SQL をサポートする関数を使用するサーバー
case 3;
//ODBC をサポートする関数を使用する
}
}
}
使用手順は次のとおりです:
dbInterface クラスを使用して、プログラム内でオブジェクト $test=new dbInterface を生成します。 ->$dbユーザー名;
test->$dbPassword; パスワード
test->$dbHost;
データベース接続: 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); SQL の戻り値の現在のレコードを取得します。実行が成功すると、ポインタは次のレコードに移動します。
int test->dbNumrows(dataHandle); SQL 実行後に取得されたレコードの数を取得します (主に SELECT ステートメント)。
int test->dbNumcols(dataHandle); SQL 実行後に取得されるレコード フィールドの数を取得します (主に SELECT ステートメント)
ここで例を送信して説明します:
データベースは MQSQL を使用します: そのホスト名は "localhost"、ユーザー名は「root」、パスワードは「」です。
mysql には testdb データベースとテーブル table1 が含まれています: name フィールドと pay フィールド
require("testdb.inc"); //dbInterface class
$test = new dbInterface;//class 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 "
"
{
$ls_col = $test- > dbNumcols($db); //テーブル内の列数を取得します
echo $ls_col;
$cate_result=$test->dbFetchrow($temp_result,0);/ /レコード数を取得 1行目
$hcid=$cate_result[0];//nameの値を取得
$hcate=$cate_result[1];//payの値を取得
echo $hcid; "
";
echo $hcate;
}
?> 操作。他のデータベースを操作したい場合は、dbInterface クラスの dbID 変数を変更するだけです。
上記では、データ復元ソフトウェア easyrecovery の内容を含め、PHP のデータベース操作のカプセル化について紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。