ホームページ  >  記事  >  バックエンド開発  >  Oracleのphpクラスインスタンスの操作

Oracleのphpクラスインスタンスの操作

WBOY
WBOYオリジナル
2016-08-08 09:33:43962ブラウズ

//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
//
// 【ファイル名】:C_ora_db.inc
// [関数]: Oracle パブリック関数クラス
//
// [最終更新日]: 2001/05/11[cxx]
// [変数の定義規則]: ‘C_’ = 文字型、‘I_’ = 整数型、‘N_’ = 数値型、‘L_’ = ブール型、‘A_’ = 配列型
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// ※db_logon() データベース接続を開く
// db_query() // ※ DB_CHANGE () データベース変更ユニバーサル関数 (挿入、削除、更新)
// ※db_insert() db_change() を直接呼び出します
// ※db_delete()削除を通じて、db_change() を直接呼び出します
// ※ db_update() 更新、db_change() を直接呼び出す
// ※db_commit() // ※db_rollback() ※トランザクションのロールバック
// ※db_logoff() データベース接続を切断します
//------------------------------------------------ ------------------------------------------


クラス c_ora_db
{


//------------------------------------------------ ------------------------------------------
// 変数の定義
//------------------------------------------------ ------------------------------------------
= "" = "" = "" var $I_linkID = 0; var $I_stmtID = 0;                                                                                                                                                                          //------------------------------------------------ ------------------------------------------



//------------------------------------------------ ------------------------------------------
// 関数名: db_logon()
// 関数: データベース接続を開く
// パラメータ: なし
// 戻り値: 接続ハンドル (整数)
// 注: なし
//------------------------------------------------ ------------------------------------------
関数 db_​​logon()
                                                        $this->I_linkID = @OCILogon($this->C_user,$this->C_passwd,$this->C_db); If ($this->I_linkID == 0){AlertExit('データベース リンクに失敗しました。DBA に連絡してください!');}
$ this-> を返します。 }
//------------------------------------------------ ------------------------------------------


//------------------------------------------------ ------------------------------------------
// 関数名: db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
// 関数:
を選択 // パラメータ: $C_sql SQL ステートメント
// $ a_define でフィールドをバインドします。配列型
//質問されています // $ i_end レコード終了
// 戻り値: 2次元配列($A_rs)
// 注: 対応するフィールドの値には、数値 0、1、2.... を使用してアクセスすることも、フィールド名をクエリすることによってアクセスすることもできます
; // $A_rs[0][0] または $A_rs[0]['NAME'] または $A_rs[0]['name'] を使用すると、最初のレコードの NAME フィールドにアクセスできます
// $I_start、$I_end はページングで使用されるパラメータです。
//------------------------------------------------ ------------------------------------------
関数 db_​​query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
                                                        If (!$C_sql){AlertExit("Incompleteparameters!");}//パラメータを確認します

//接続検出
If ($this->I_linkID == 0){AlertExit('データベース リンクに失敗しました。DBA に連絡してください!');}

//フォーマット検出
$this -> I_stmtID = OCiparse($this -> I_linkID,$C_sql); If (!$this -> I_stmtID){AlertExit('SQL 形式エラー! プログラマに連絡してください');}

//バインドされたフィールドが指定されていない場合は、SQL ステートメントからフェッチされます
if($A_define=="")
                                                           $A_Cur =explode("select",$C_sql);$A_Cur =explode("from",$A_Cur[1]); $A_define =explode(",",$A_Cur[0]); }

//データベーステーブルのフィールドをバインドします
If(gettype($A_define) == "array") //クエリ列は配列です
                                                            for($i=0;$i                                                                 $A_define_up[$i] = トリム(strtoupper($A_define[$i])); }
for($i=0;$i                                                                 OcidefineByname ($ this -& gt; i_stmtid, "$ a_define_up [$ i]", & $ $ a_define [$ i]); }
}
elseif(trim($ a_define)<> "")                                                             $A_define_up = トリム(strtoupper($A_define)); OCIDefineByName($this -> I_stmtID,"$A_define_up",&$$A_define); }

//バインドされた SQL ステートメントを実行します
If(!OCIExecute($this -> I_stmtID))
                                                            実行エラー:SQL エラー:$C_sql
";
false を返します
}

                                                                                                                                                                                                           
//レコードを取得します
while (OCIFetchInto($this -> I_stmtID,&$cur,OCI_ASSOC))
                                                            // クエリされたすべてのレコードを取得します
if ($I_start == -1)
                                                                If (gettype($A_define) == "array") //クエリ列は配列です
                                                                   for ($i=0;$i                                                                         If ($cur[$A_define_up[$i]] <> $$A_define[$i])
                                                                      $$ a_define [$ i]                                                             $ A_RS [$ LOWER] [$ i] = $ $ a_define [$ i] // デジタルアクセスを使用します
; $ A_RS [$ low] [$ a_define [$ i]] = $ $ a_define [$ i] // 小さいアクセスを使用します
; $A_rs[$ lower][$A_define_up[$i]] = $$A_define[$i];                                                                                                                                                                                   Elseif (trim ($ a_define) & lt; & gt; "") // クエリリストは 1 つだけです
                                                                                                                         If ($cur[$A_define_up] <> $$A_define)
                                                                                                                                                                                                                                                                                                                                                                                                     $ A_RS [$ LOWER] [0] = $ $ a_define // デジタルアクセスを使用します
; $A_rs[$ lower][$A_define] = $$A_define; $A_rs[$ lower][$A_define_up] = $$A_define;                                                                                         $ LOWER ++ // 入札プラス 1
}
                                          // 指定されたレコードを取得します (ページングで使用)
if ($I_start <> -1)
                                                                If ($cnt >= $I_start)
                                                                   $cnt++; If ($I_end - $I_start <> 0)
                                                                                           $I_終了--;
                            if (gettype($A_define) == "配列")
                            {
                                for($i=0;$i                                 {
                                    if ($cur[$A_define_up[$i]] <> $$A_define[$i])
                                    {
                                        $$A_define[$i] = $cur[$A_define_up[$i]];     
                                    }
                                    $A_rs[$ lower][$i] = $$A_define[$i];                    //数字访问を使用
                                    $A_rs[$ lower][$A_define[$i]] = $$A_define[$i];        //用小访问
                                    $A_rs[$ lower][$A_define_up[$i]] = $$A_define[$i];    //用大写访问
                                }
                            }elseif(trim($A_define) <> "")
                            {
                                if ($cur[$A_define_up] <> $$A_define)
                                {
                                    $$A_define = $cur[$A_define_up];     
                                }
                                $A_rs[$ lower][0] = $$A_define;                    //数字访问を使用
$ a_rs [$ lower] [$ a_define] = $$ a_define; $ a_rs [$ lower] [$ a_define_up] = $$ a_define;                                                                      
それ以外                                                                     壊す;                                                                                それ以外                                                                    $ CNT ++ // $ cnt & lt; $ i_start の場合、 $ cNT ++
                                                                                               }
                                          //終わり

//ハンドルを解放し、クエリデータ(二次元配列)を返します
OCIFreestatement($this -> I_stmtID); $A_rs を返します。
} //関数の終了
//------------------------------------------------ ------------------------------------------


//------------------------------------------------ ------------------------------------------
// 関数名: db_change($C_sql,$A_bind)
// 関数: DB 変更
// パラメータ: $C_sql SQL ステートメント
// $ a_Bind でフィールドをバインドします。配列型
// 戻り値: ブール値
// 注記 //------------------------------------------------ ------------------------------------------
関数 db_​​change($C_sql,$A_bind="")
{
If (!$C_sql){AlertExit("Incompleteparameters!");}//パラメータを確認します

//接続検出
if($ this-&gt; i_linkid == ""){alertexit( "私たちのデータベースはビジーです、後でもう一度試してください!");}
//フォーマット検出
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql); If (!$this -> I_stmtID){AlertExit('SQL 形式エラー! プログラマに連絡してください');}

//バインディング
If(gettype($A_bind) == "配列")
                                                            for($i=0;$i                                                                 グローバル $$A_bind[$i]; $o a_bind [$ i] = ストリップスラッシュ ($ $ a_bind [$ i]); $ $ A_bind [$ i] = strplace ("" & lt;? "," & Lt;? ", $ $ A_bind [$ i]); // }
for($i=0;$i OCIBindByName($this -> I_stmtID, ":$A_bind[$i]", &$$A_bind[$i], -1); }
}
elseif(trim($ a_bind)&lt;&gt; "")                                                             グローバル $$A_bind; $$A_bind = ストリップスラッシュ($$A_bind); $ $ A_bind = strplace ("" & lt;? "," & Lt;? ", $ $ A_bind); // OCIBindByName($this -> I_stmtID, ":$arrBind", &$$A_bind, -1); }

// 実行して成功したか確認します
If(!OCIExecute($this -> I_stmtID,OCI_DEFAULT))
                                                            実行エラー:SQL エラー:$C_sql
";
false を返します
}

/*//影響を受ける行の数を返します
グローバル $I_changenum
$I_changenum = OCINumrows($this -> I_stmtID);*/

//ハンドルを解放して値を返す
OCIFreeStatement($this -> I_stmtID); true を返します
}
//------------------------------------------------ ------------------------------------------


//------------------------------------------------ ------------------------------------------
// 関数名: db_delete($C_sql)
// 関数: 削除
// パラメータ: C_sql SQL ステートメント
// 戻り値: ブール値
// 注: この関数は直感的に使用するためのものであり、基本的に db_change() を呼び出します
//------------------------------------------------ ------------------------------------------
関数 db_​​delete($C_sql)
{
戻り $this -> db_change($C_sql); }
//------------------------------------------------ ------------------------------------------


//------------------------------------------------ ------------------------------------------
// 関数名: db_insert($C_sql,A_bind)
// 関数:
を挿入 // パラメータ: C_sql SQL ステートメント
// A_bind バインド
// 戻り値: ブール値
// 注: この関数は直感的に使用するためのものであり、基本的に db_change() を呼び出します
//------------------------------------------------ ------------------------------------------
関数 db_​​insert($C_sql,$A_bind="")
{
戻り $this -> db_change($C_sql,$A_bind); }
//------------------------------------------------ ------------------------------------------


//------------------------------------------------ ------------------------------------------
// 関数名: db_update($C_sql,A_bind)
// 関数: 更新
// パラメータ: C_sql SQL ステートメント
// A_bind バインド
// 戻り値: ブール値
// 注: この関数は直感的に使用するためのものであり、基本的に db_change() を呼び出します
//------------------------------------------------ ------------------------------------------
関数 db_​​update($C_sql,$A_bind="")
{
戻り $this -> db_change($C_sql,$A_bind); }
//------------------------------------------------ ------------------------------------------



//------------------------------------------------ ------------------------------------------
// 関数名: db_commit()
// 関数: トランザクションの送信
// パラメータ: なし
// 戻り値: ブール値
// 注: なし
//------------------------------------------------ -----------------------------------------------
関数 db_​​commit()
{
Return (Ocicommit ($ this-& gt; i_linkid));                                                                          //------------------------------------------------ ------------------------------------------


//------------------------------------------------ ------------------------------------------
// 関数名: db_rollback()
// 関数: トランザクションのロールバック
// パラメータ: なし
// 戻り値: ブール値
// 注: なし
//------------------------------------------------ -----------------------------------------------
関数 db_​​rollback()
{
Return (Ocirollback ($ this-& gt; I_linkid));                                                                          //------------------------------------------------ ------------------------------------------


//------------------------------------------------ ------------------------------------------
// 関数名: db_logoff()
// 機能: データベース接続を切断します
// パラメータ: なし
// 戻り値: ブール値
// 注: なし
//------------------------------------------------ -----------------------------------------------
関数 db_​​logoff()
{
return (OCILogoff($this->I_linkID)); }
//------------------------------------------------ ------------------------------------------


//------------------------------------------------ ------------------------------------------
}
?>
以上、Oracleを操作するためのPHPクラスのサンプルを内容も含めて紹介しましたので、PHPチュートリアルに興味のある方の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。