PHP_PHP チュートリアルでのデータベース操作のカプセル化

WBOY
リリース: 2016-07-21 16:02:44
オリジナル
1033 人が閲覧しました

PHP でのデータベース操作のカプセル化

動的 Web デザインの多くにはデータベース操作が含まれますが、必要に応じて他のバックエンド データベースが使用される場合、多くのプログラムの変更が必要になる場合があります。これは面倒で時間がかかり、エラーが発生しやすい作業です。実際、PHP のクラスを使用してデータベース操作をカプセル化できるため、作成されたプログラムは非常に小さな変更でバックグラウンド データベースへの変更を完了できます。
これを dbfz.inc にカプセル化し、その設計は次のようになります:

class dbInterface{ var $dbID=1; // dbID が 1 の場合、それを決定するために使用されます。 2はSQL Server、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 dbClos​​e($dataHandle){
switch($ this->dbID)
{
case 1;
mysql_close($dataHandle)
case 2;
//SQL Server をサポートする関数を使用する
}
} // 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);
case 2; SQL Server をサポートする関数を使用する
case 3;
//ODBC をサポートする関数を使用する
}
}

//レコード数を取得する関数を返す
function dbNumrows($dataHandle){
switch($this-> ;dbID)
{
case 1;
return @mysql_num_rows($dataHandle);
//SQL Server をサポートする関数を使用する
case 3;
// /列の数を取得する関数を返します
function dbNumcols($ dataHandle){
switch($this->dbID)
{
return @mysql_num_fields($dataHandle)
// SQL Server をサポートする関数を使用する
case 3;
//サポート ODBC 関数を使用する
}
}
}

使用手順は次のとおりです:

プログラム内でオブジェクトを生成するには dbInterface クラスを使用します $test=new dbInterface ;

パラメータを設定する
test->$dbUsername;
test->$dbPassword;Password
test->$dbHost;Host
void setParameter(string host, string username, string username);接続: dbhandle test->dbConnect();

戻り値: fasle 、データベース接続エラー
>0、データベース接続ハンドル

データベースが閉じられました: void test->dbClos​​e(dbhandle);

テーブル操作: int test->dbQuery(string データベース名, string sql, dbhandle); SQL ステートメントを実行します

戻り値: false、SQL 実行エラー
>0、SQL 実行は正常で、SQL 戻り値

Data 操作を指します: int test->dbFetchrow(dataHandle, int offset); SQL 戻り値 Record の現在の値を取得します。実行が成功すると、ポインタは次のレコードに移動します
int test->dbNumrows(dataHandle); SQL 実行後に取得されるレコードの数 (主に SELECT ステートメント)
int test->dbNumcols(dataHandle); SQL の実行後に取得されるレコード フィールドの数 (主に SELECT ステートメント)

次に、説明するための例を送信します。データベースは MQSQL を使用します。ホスト名は「localhost」、ユーザー名は「root」、パスワードは「」です。
mysql には testdb データベースとテーブル table1 が含まれています: name フィールドと pay フィールド

test HEAD>

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;
if (ls_num>0 )
$ls_col = $test -> ;dbNumcols($db); //テーブル内の列の数を取得します
echo $ls_col;
$cate_result=$test->dbFetchrow($temp_result,0); //レコード数を取得
$hcid=$cate_result[0]の1行目;//nameの値を取得
$hcate=$cate_result[1];//payの値を取得
echo $hcid;
echo "
";
echo $hcate;
}

?> データベースに対する操作。他のデータベースを操作したい場合は、dbInterface クラスの dbID 変数を変更するだけです。





http://www.bkjia.com/PHPjc/316495.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/316495.html

技術記事

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート