php実装はmysql、mssql、pgデータベース操作クラス、mysqlmssql
に使用できます
この記事の例では、mysql、mssql、pg の 3 つのデータベースで使用できるデータベース操作クラスについて説明します。変更を加えることで、データベースの種類を簡単に変更できます。参照用に全員と共有してください。具体的な分析は次のとおりです:
機能リスト、インデックス:
開く: データベース接続を開く 行:71
Close: データベース接続を閉じます Line:107
SelectDB: データベースの選択 Line:129
クエリ:クエリの作成 行:151
DataSeek:レコードポインタの移動 Line:175
FieldName: フィールド名を取得 Line:198
FieldType: フィールド タイプを取得します Line:220
FieldLength: フィールドの長さを取得します Line:242
FetchRow: データを取得して配列 (数値インデックス) に保存 Line:264
FetchArray: データを取得して配列に保存します (数値と関連付け) 行: 289
FetchObject: データを取得してオブジェクトに保存します (オブジェクト モード) Line:315
結果: 結果データを取得 Line:341
FreeResult: レコードセット Line:363 を更新します
RowsNumber: レコード数を取得 Line:385
FieldsNumber: フィールド数を取得 Line:407
CurRecNumber: 現在のレコード番号を取得します (0 から始まります) Line: 429
RecordNumber: 現在の行番号を取得します (1 から始まります) Line:438
MoveFirstRec: 最初のレコード Line:447 に移動します
MoveLastRec: 最後のレコード Line:469 に移動します
MovePreviousRec: 前のレコード Line:495 に移動します
MoveNextRec: 次のレコード Line:521 に移動します
MoveToRec: 特定のレコードに移動 (1 から開始) Line:548
phpデータベースのオペレーションコードは次のとおりです:
コードをコピーします コードは次のとおりです:
/*************************************************** * ******************************
このクラスはデータベース操作をカプセル化し、データベースの移植性に優れています: mysql、mssql、pg
************************************************* * ************************************
// - 関数リストのインデックス:
// - Open: データベース接続を開きます Line:71
// - Close: データベース接続を閉じます Line:107
// - SelectDB: データベースの選択 Line:129
// - クエリ: クエリ行:151 を作成します
// - DataSeek: レコード ポインターを移動 Line:175
// - FieldName: フィールド名を取得します Line:198
// - FieldType: フィールド タイプを取得します Line:220
// - FieldLength: フィールドの長さを取得します Line:242
// - FetchRow: データを取得して配列 (数値インデックス) に保存 Line:264
// - FetchArray: データを取得し、配列 (数値および連想) に保存します Line:289
// - FetchObject: データを取得してオブジェクトに保存します (オブジェクト モード) Line:315
// - 結果: 結果データを取得 Line:341
// - FreeResult: レコードセットを更新します Line:363
// - RowsNumber: レコード数を取得 Line:385
// - FieldsNumber: フィールド数を取得 Line:407
// - CurRecNumber: 現在のレコード番号を取得します (0 から始まります) Line:429
// - RecordNumber: 現在の行番号を取得します (1 から始まります) Line:438
// - MoveFirstRec: 最初のレコード Line:447 に移動
// - MoveLastRec: 最後のレコード Line:469 に移動します
// - MovePreviousRec: 前のレコード Line:495 に移動します
// - MoveNextRec: 次のレコード Line:521 に移動します
// - MoveToRec: 特定のレコードに移動 (1 から開始) Line:548
************************************************* * ************************************
//入力:
// - dbType: データベースの種類: mssql、mysql、pg
// - connectType: 接続タイプ: c - 共通接続、
// p - 永続的な接続を開きます
// - 接続: MS SQL Server の場合 - サーバー名、
// MySQL の場合 - ホスト名 [:ポート] [:/パス/to/ソケット] ,
// PostgreSQL の場合 - ホスト、ポート、tty、オプション、
// dbname (ユーザー名とパスワードなし)
// - ユーザー名
// - パスワード
// - dbName: データベース名
// - クエリ: SQL クエリ
// - 結果: 結果セット識別子
// - 行番号:
// - オフセット: フィールド識別子
// - ResultType: 定数で、次の値を取ることができます: PGSQL_ASSOC、PGSQL_NUM、PGSQL_BOTH
// - フィールド名
//
// 戻り値:
// - 結果: 結果セット識別子
// - 接続リンク識別子
// - レコード番号 (0 から始まる: CurrRecNumber または 1 から始まる: RecordNumber)
// - 指定された結果セット内のフィールドの数
// - 指定された結果セット内の行数
************************************************* * **********************************/
クラス mDatabase
{
/***********************************メンバ変数定義************** **** ************************/
var $dbType; // データベース库の型: mssql、mysql、pg
var $connectType; // 接続タイプ: c - 共通接続、p - 永続接続を開く
var $idCon; // 连接号
var $curRow; // 結果からのデータの現在の行番号
// 指定された結果識別子の配列に関連付けられます
var $seek; // DataSeek 関数配列からのデータの現在の行番号
/***********************************メンバーメソッドの実装************* **** ************************/
/*************************************************** * *********************************
※データベースへの接続機能
************************************************* * **********************************/
関数オープン($dbType, $c, $connect, $username = "", $password = "")
{
$this->dbType = $dbType;
スイッチ ($dbType) {
ケース「mssql」:
If ($connectType == "c") {
$idCon = mssql_connect($connect, $username, $password);
} それ以外の場合 {
$idCon = mssql_pconnect($connect, $username, $password);
}
壊す;
ケース「mysql」:
If ($connectType == "c") {
$idCon = mysql_connect($connect, $username, $password);
} それ以外の場合 {
$idCon = mysql_pconnect($connect, $username, $password);
}
壊す;
ケース「pg」:
If ($connectType == "c") {
$idCon = pg_connect($connect . " ユーザー = . $ ユーザー名 . " パスワード = . $パスワード);
} それ以外の場合 {
$idCon = pg_pconnect($connect . " ユーザー = . $ユーザー名 . " パスワード = . $パスワード);
}
壊す;
デフォルト:
$idCon = 0;
壊す;
}
$this->idCon = $idCon;
$idCon を返します。
}
/*************************************************** * *********************************
*データベース接続を閉じます
************************************************* * **********************************/
関数Close()
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_close($this->idCon);
壊す;
ケース「mysql」:
$r = mysql_close($this->idCon);
壊す;
ケース「pg」:
$r = pg_close($this->idCon);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*データベースを選択
************************************************* * **********************************/
関数 SelectDb($dbName)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_select_db($dbName);
壊す;
ケース「mysql」:
$r = mysql_select_db($dbName);
壊す;
ケース「pg」:
$r = 偽;
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*クエリを作成する
************************************************* * ************************************/
関数クエリ($query)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_query($query, $this->idCon);
壊す;
ケース「mysql」:
$r = mysql_query($query, $this->idCon);
壊す;
ケース「pg」:
$r = pg_exec($this->idCon, $query);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$this->curRow[$r] = 0;
$this->seek[$r] = 0;
$r を返します。
}
/*************************************************** * *********************************
*レコードポインタを移動
************************************************* * **********************************/
関数 DataSeek($result, $RowNumber)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_data_seek($result, $RowNumber);
壊す;
ケース「mysql」:
$r = mysql_data_seek($result, $RowNumber);
壊す;
ケース「pg」:
$r = 偽;
壊す;
デフォルト:
$r = 偽;
壊す;
}
$this->seek[$result] = (int) $RowNumber;
$r を返します。
}
/*************************************************** * *********************************
*フィールド名を取得します
************************************************* * ************************************/
関数フィールド名($result, $offset)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_field_name($result, $offset);
壊す;
ケース「mysql」:
$r = mysql_field_name($result, $offset);
壊す;
ケース「pg」:
$r = pg_fieldname($result, $offset);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*フィールドタイプを取得します
************************************************* * **********************************/
関数フィールドタイプ($result, $offset)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_field_type($result, $offset);
壊す;
ケース「mysql」:
$r = mysql_field_type($result, $offset);
壊す;
ケース「pg」:
$r = pg_fieldtype($result, $offset);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*フィールドの長さを取得します
************************************************* * **********************************/
関数 FieldLength($result, $offset)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_field_length($result, $offset);
壊す;
ケース「mysql」:
$r = mysql_field_len($result, $offset);
壊す;
ケース「pg」:
$r = pg_fieldsize($result, $offset);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*データを取得し、配列に保存します。配列には数値インデックスを使用してアクセスできます
************************************************* * ************************************/
関数 FetchRow($result, $RowNumber = 0)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_fetch_row($result);
壊す;
ケース「mysql」:
$r = mysql_fetch_row($result);
壊す;
ケース「pg」:
$r = pg_fetch_row($result, $RowNumber);
If ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*データを取得して配列に保存し、数値インデックスと連想インデックスを使用してアクセスできます
************************************************* * **********************************/
関数 FetchArray($result, $RowNumber = 0, $ResultType = 2)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_fetch_array($result);
壊す;
ケース「mysql」:
$r = mysql_fetch_array($result);
壊す;
ケース「pg」:
$r = pg_fetch_array($result, $RowNumber, $ResultType);
If ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*データを取得してオブジェクトに保存します
************************************************* * ************************************/
関数 FetchObject($result, $RowNumber = 0, $ResultType = 2)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_fetch_object($result);
壊す;
ケース「mysql」:
$r = mysql_fetch_object($result);
壊す;
ケース「pg」:
$r = pg_fetch_object($result, $RowNumber, $ResultType);
If ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*結果データを取得する
************************************************* * ************************************/
関数の結果($result, $RowNumber, $FieldName)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_result($result, $RowNumber, $FieldName);
壊す;
ケース「mysql」:
$r = mysql_result($result, $RowNumber, $FieldName);
壊す;
ケース「pg」:
$r = pg_result($result, $RowNumber, $FieldName);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
※結果データを公開
************************************************* * ************************************/
関数 FreeResult($result)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_free_result($result);
壊す;
ケース「mysql」:
$r = mysql_free_result($result);
壊す;
ケース「pg」:
$r = pg_freeresult($result);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*レコード数を取得します
************************************************* * **********************************/
関数 RowsNumber($result)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_num_rows($result);
壊す;
ケース「mysql」:
$r = mysql_num_rows($result);
壊す;
ケース「pg」:
$r = pg_numrows($result);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*フィールドの数を取得します
************************************************* * ************************************/
関数フィールド番号($result)
{
スイッチ ($this->dbType) {
ケース「mssql」:
$r = mssql_num_fields($result);
壊す;
ケース「mysql」:
$r = mysql_num_fields($result);
壊す;
ケース「pg」:
$r = pg_numfields($result);
壊す;
デフォルト:
$r = 偽;
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*現在のレコード番号を取得します(0から始まります)
************************************************* * ************************************/
関数 CurRecNumber($result)
{
$r = $this->curRow[$result];
$r を返します。
}
/*************************************************** * *********************************
*現在の行番号を取得します(1から始まります)
************************************************* * **********************************/
関数 RecordNumber($result)
{
$cr = $this->CurRecNumber($result) + 1;
$cr を返します。
}
/************************************************ ***********************************
*第一条记录に移動
************************************************* ***********************************/
関数 MoveFirstRec($result)
{
スイッチ ($this->dbType) {
ケース「pg」:
$r = $this->FetchRow($result, 0);
壊す;
デフォルト:
$rn = $this->DataSeek($result, 0);
If ($rn) {
$r = $this->FetchRow($result);
If ($r) $this->curRow[$result] = $this->seek[$result];
} それ以外の場合 {
$r = 偽;
}
壊す;
}
$r を返します。
}
/*************************************************** * *********************************
*最後のレコードに移動
************************************************* * **********************************/
関数 MoveLastRec($result)
{
$rs = $this->RowsNumber($result);
If ($rs) {
$rs--;
スイッチ ($this->dbType) {
ケース「pg」:
$r = $this->FetchRow($result, $rs);
壊す;
デフォルト:
$rn = $this->DataSeek($result, $rs);
If ($rn) {
$r = $this->FetchRow($result);
If ($r) $this->curRow[$result] = $this->seek[$result];
} それ以外の場合 {
$r = 偽;
}
壊す;
}
}
$r を返します。
}
/*************************************************** * *********************************
*前のレコードに移動します
************************************************* * **********************************/
関数 MovePreviousRec($result)
{
$rs = $this->CurRecNumber($result);
If ($rs) {
$rs--;
スイッチ ($this->dbType) {
ケース「pg」:
$r = $this->FetchRow($result, $rs);
壊す;
デフォルト:
$rn = $this->DataSeek($result, $rs);
If ($rn) {
$r = $this->FetchRow($result);
If ($r) $this->curRow[$result] = $this->seek[$result];
} それ以外の場合 {
$r = 偽;
}
壊す;
}
}
$r を返します。
}
/*************************************************** * *********************************
*次のレコードに移動
************************************************* * ************************************/
関数 MoveNextRec($result)
{
$rs = $this->CurRecNumber($result);
$rn = $this->RowsNumber($result);
$rs++;
If ($rs != $rn) {
スイッチ ($this->dbType) {
ケース「pg」:
$r = $this->FetchRow($result, $rs);
壊す;
デフォルト:
$re = $this->FetchRow($result);
If ($re) {
$r = $re;
$this->curRow[$result]++;
$this->seek[$result] = $this->curRow[$result];
} それ以外の場合 {
$r = 偽;
}
壊す;
}
}
$r を返します。
}
/*************************************************** * *********************************
※指定したレコードへ移動(番号は0から始まります)
************************************************* * **********************************/
関数 MoveToRec($result, $RowNumber)
{
$rn = $this->RowsNumber($result);
If ($RowNumber > 0 And $RowNumber
$RowNumber--;
スイッチ ($this->dbType) {
ケース「pg」:
$r = $this->FetchRow($result, $RowNumber);
壊す;
デフォルト:
$rn = $this->DataSeek($result, $RowNumber);
If ($rn) {
$r = $this->FetchRow($result);
If ($r) $this->curRow[$result] = $this->seek[$result];
} それ以外の場合 {
$r = 偽;
}
壊す;
}
}
$r を返します。
}
}
//******************************メソッドは実装されています****************** ***********************//
?>
ここで説明されている大規模な PHP データ プログラムの設計が役立つことを希望します。
http://www.bkjia.com/PHPjc/927254.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/927254.html技術記事 php は、mysql、mssql、pg データベースの操作に使用できます、mysqlmssql の本文の例では、mysql、mssql、pg の 3 つのデータベースの操作に使用できます、どんな修正を加えても便利です...