ホームページ >バックエンド開発 >PHPチュートリアル >PHPカプセル化データベース操作クラス(リンクデータベース)_PHPチュートリアル

PHPカプセル化データベース操作クラス(リンクデータベース)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:06:281966ブラウズ

Web サイトを開発するときのより合理的なアプローチは、よく使用するプログラムの一部を関数にするか、クラスに閉じて、再利用して開発コストを節約することです。私がよく使用するクラスを紹介します。

オブジェクト指向テクノロジーの基礎を持つプログラマーは、わずか 1 日で書き始めることができます。 PHP がデータベースにアクセスすると、文字エンコーディングの問題、SQL 構文エラー、PHP によるデータ レコード オブジェクトと戻りオブジェクトの処理など、さまざまな問題が頻繁に発生します。ここでは、データベースの追加、削除、追加、変更などの操作をカプセル化したデータベース操作クラスを作成しました。これは非常に便利です。このクラスを使用すると、Web サイトのバックエンド開発を高速化できます。

利点:

1. 便利で高速なデータベース操作はインターフェースを呼び出すだけです。
2. 統一エンコード(utf8)なので文字化けしにくい
3. たとえば、フロントエンドリクエストを処理するバックグラウンドプログラム (test.php) + テーブルカプセル化クラス (user.class.php) + データベースカプセル化クラス (db.class.php) + 構成情報 (configuration.php) の構造を明確にします。 php)
次の例には、configuration.php + db.class.php + user.class.php + test.php という 4 つのファイルが同じディレクトリに配置されています。

最初はデータベース設定ファイルクラスconfiguration.phpです

コードは次のとおりです コードをコピー


/**
* データベース構成情報
​​*/
Define('DB_HOST','localhost'); //サーバー
Define('DB_USER','root') //データベースユーザー名
Define('DB_PASSWORD',''); //データベースパスワード
Define('DB_NAME','test0'); //デフォルトのデータベース
Define('DB_CHARSET','utf8'); //データベース文字セット
Define('TIMEZONE',"PRC") //タイムゾーン設定

?>

次のステップはデータベース操作クラス db.class.php です

コードは次のとおりです コードをコピー
require_once("./configuration.php") //設定定数ファイルを導入します
date_default_timezone_set(TIMEZONE);
/**
* クラス名:DB
* 説明: データベース操作クラス
​*/
クラスDB
{
パブリック $host //サーバー
public $username //データベースのユーザー名
public $password; //データパスワード
public $dbname; //データベース名
public $conn; //データベース接続変数

/**
* DBクラスコンストラクター
​*/
パブリック関数 DB($host=DB_HOST,$username=DB_USER,$password=DB_PASSWORD,$dbname=DB_NAME)
{
$this->host = $host;
$this->ユーザー名 = $ユーザー名;
$this->password = $password;
$this->dbname = $dbname;

}
/**
* データベース接続を開く
​*/
パブリック関数 open()
{
$this->conn = mysql_connect($this->ホスト,$this->ユーザー名,$this->パスワード);
Mysql_select_db($this->dbname);
Mysql_query("SET CHARACTER SET utf8");
}
/**
*データ接続を終了します
​*/
パブリック関数 close()
{
Mysql_close($this->conn);
}
/**
* SQLステートメントを通じてデータを取得します
* @return: array()
​*/
パブリック関数 getObjListBySql($sql)
{
$this->open();
$rs = mysql_query($sql,$this->conn);
$objList = array();
While($obj = mysql_fetch_object($rs))
{
If($obj)
{
$objList[] = $obj;
}
}
$this->close();
$objList を返します;
}

/**
* データベーステーブルにデータを挿入します
* @param:$table、テーブル名
* @param: $columns、テーブル内のすべてのフィールド名を含む配列。デフォルトの空の配列は、すべて順序付けされたフィールド名です
* @param: $values、すべてのフィールドに対応する属性値を含む配列
​*/
public function insertData($table,$columns=array(),$values=array())
{
$sql = '.$table に挿入 .'( ';
for($i = 0; $i {
$sql .= $columns[$i];
If($i < sizeof($columns) - 1)
{
$sql .= ',';
}
}
$sql .= ') 値 ( ';
for($i = 0; $i {
$sql .= "'".$values[$i]."'";
If($i < sizeof($values) - 1)
{
$sql .= ',';
}
}
$sql .= ' )';
$this->open();
Mysql_query($sql,$this->conn);
$id = mysql_insert_id($this->conn);
$this->close();
$id を返します;
}

/**
* テーブルの属性を通じてデータを取得します
​*/
  パブリック関数 getDataByAtr($tableName,$atrName,$atrValue){
   @$data = $this->getObjListBySql("SELECT * FROM ".$tableName." WHERE $atrName = '$atrValue'");
   if(count($data)!=0)$data を返す;
   NULL を返します。 
   }
  /**
* テーブル内の「id」を介してレコードを削除します
​*/
   パブリック関数 delete($tableName,$atrName,$atrValue){
    $this->open();
    $deleteResult = false;
    if(mysql_query("DELETE FROM ".$tableName." WHERE $atrName = '$atrValue'")) $deleteResult = true;
    $this->close();
    if($deleteResult) true を返します;
    それ以外の場合は false を返します;
    }
  /**
*テーブル内の属性値を更新します
​*/
   パブリック関数 updateParamById($tableName,$atrName,$atrValue,$key,$value){
    $db = 新しい DB();
    $db->open();
    if(mysql_query("UPDATE ".$tableName." SET $key = '$value' WHERE $atrName = '$atrValue' ")){ //$key不要单引号
     $db->close();
     true を返します;
    }
    他{
     $db->close();
     false を返します;
    }
   }
  /*
   * @description: 1 つのテーブルのすべてのプロパティ名を取得します
   * @param: $tbName 表名
   * @return:字符串数组
   */
  パブリック関数フィールド名($tbName){
   $resultName=array();
   $i=0;
   $this->open();
   $result = mysql_query("SELECT * FROM $tbName");
   while ($property = mysql_fetch_field($result)){
    $resultName[$i++]=$property->名前;
    }
   $this->close();
   $resultName を返します;
      }
 }
 ?>

次のステップはテストです。 phpmyadmin で test0 データベースを構築し、その中にテーブル ユーザーを作成しました。次に、PHP を使用して、データベース内のユーザー テーブルに対応するユーザー クラスを作成します。

user.class.php

コードは次のとおりです コードをコピー

require_once("./db.class.php");

クラス ユーザー{
パブリック $name = NULL;
パブリック $パスワード = NULL;

/**
* コンストラクター
​*/
パブリック関数 __construct($name,$password){
$this->name = $name;
$this->password = $password;
}

パブリック関数 insert(){
$db = 新しい DB();
$resultid = $db->insertData("user",array(),array('',$this->name,$this->password)); return $resultid;
}

パブリック静的関数 getUserById($uid){
$db = 新しい DB();
Return $db->getDataByAtr("user",'uid',$uid);
}

パブリック静的関数 getUserByName($name){
$db = 新しい DB();
@$data = $db->getObjListBySql("SELECT * FROM user WHERE name = '$name'");
If(count($data)!=0)$data を返す;
それ以外の場合は null を返します;
}

パブリック静的関数getAllUser(){

$db = 新しい DB();
@$data = $db->getObjListBySql("SELECT * FROM user");
If(count($data)!=0) $data を返します;
それ以外の場合は null を返します;
}

パブリック静的関数 deleteByUid($uid){
$admin = Admin::getAdminById($uid);
$db = 新しい DB();
If($db->delete("user","uid",$uid)) return true;
それ以外の場合は false を返します;
}
}

?>

テストプログラム: test.php

コードは次のとおりですコードをコピー
header("Content-Type:text/html; charset=utf8");

require_once("./user.class.php");

$user = 新しいユーザー("HelloWorld","123456");

$user->insert();

$users = ユーザー::getAllUser();

foreach ($users as $u) {

echo "
".$u->name."
".$u->password."
";
}
?>

http://www.bkjia.com/PHPjc/630692.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/630692.html技術記事 Web サイトを開発する場合のより合理的なアプローチは、よく使用されるプログラムの一部を関数にするか、クラスに閉じることで、再利用して開発コストを節約できるようにすることです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。