操作Oracle的php類別_PHP教程
Jul 21, 2016 pm 04:06 PM
//【警告】:未經(jīng)許可請勿隨便修改
//--------------------------- -------------------------------------------------- -------------
//-------------------------------- -------------------------------------------------- --------
//???
// 【檔案名稱】:????????????????c_ora_db.inc // 【作??者】:天灰
//??
// 【最後修改日期】:???????2001/05/11[cxx]??????
// 【定義規(guī)則]????? Sharp ,'N_'=數(shù)字型,'L_'=布林型,'A_'=陣列型
//------------------------ -------------------------------------------------- ----------------
//----------------------------- -------------------------------------------------- -----------
//????※db_logon()????????????????????開啟數(shù)據(jù)庫連接?????
//????※db_query()????????????????????通用select?????????????
//????※db_change()????????????????????數(shù)據(jù)庫改變的通用函數(shù)(insert ,delete,update)
//????※db_insert()?????????????????????????????????delete,直接呼叫db_change()
//????※db_update()?????db_change()?????????????????
//????※db_commit()??????※db_rollback()?????????????????????????開資料庫連線
//------ -------------------------------------------------- ----------------------------------
Class c_ora_db
{
?????
//---------------------------------------- --------------------------------------------------
//????????變數(shù)定義
//-------------------------------------- -------------------------------------------------- --
????var $C_user??????????= "";???????????????????????//資料庫口令
????var $C_db??????????????var $ I_linkID????????= 0;???????????????????????????????????????????????????//使用「句柄
??????????????//全域色彩
//------------------------------------------------ ------------------------------------------
//-------------------------------------------- ----------------------------------------------
/ /????????函數(shù)名稱:db_logon()
//????????作??使用:開啟資料庫連線
//???柄(整數(shù))
//????????備??附註:無
//-------------------------------------------- ----------------------------------------------
????function db_logon()????
????{????
????????$this->I_linkID =??.??if ($this->I_linkID == 0){AlertExit('資料庫連結(jié)失敗,請聯(lián)絡(luò)DBA!');}
????????return??$this->I_linkID;?????}
???????
//----------- -------------------------------------------------- -----------------------------
//????????函數(shù)名稱:db_query($C_sql,$A_define="",$I_start =-1,$I_end=-1)
//????????作??使用: lect???>//??????????
//????????????????$A_define???????????????陣列型?????????
//????????????????$I_start??????????????????$I_end????????????????????備??註:透過數(shù)字0,1,2....可存取對應(yīng)欄位的值; 或透過查詢欄位名稱也可存取對應(yīng)欄位的值
//????????????????如透過$A_rs[0][0]或$ A_rs[0]['NAME']或$A_rs[0]['name']都可存取首筆記錄NAME欄位
//????????????????$I_start,$I_end是配合分頁所使用的參數(shù)。
//--------------------------------------------- ----------------------------------------------
????function??db_query ($C_sql,$A_define="",$I_start=-1,$I_end=-1)
????{????
???????if (!$C_){AlertExitsql("/全!
???????//連接偵測
???????if ($this->I_linkID == 0){AlertExit('資料庫連結(jié)失敗,請與DBA聯(lián)絡(luò)!');偵測
???????$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);?????
????請聯(lián)絡(luò)程式設(shè)計(jì)師');}
???????//如果沒有指定綁定的字段,則從SQL語句中去取
???????>????????????$A_Cur = explode("select",$C_sql);
????????????????$A_define = explode(",",$A_Cur[0] );
???????}
???????????//綁定資料庫表欄位
?????//查詢列是陣列
????????{
????????????for( $i=0;$i
?????????????//大寫並去除空格
????????????}
????????????for($i=0;$i I_stmtID,"$A_define_up[$i]", &$$A_define[$i]);????//綁定
????????????}
?????????????????????//查詢列只有一個(gè)
????????{
$A_define_up = trim(strtoupper($A_define));
????????????OCIDefineByName($this -> I_stmtID,》 ??>????????//執(zhí)行綁定良好的SQL語句
????????if(!OCIExecute($this -> I_stmtID))
????????{ $C_sql
";
????????????return false;
???????
????????$lower = 0;???????????????????????????????????地??>????????while (OCIFetchInto($this -> I_stmtID,&$cur,OCI_ASSOC))
???????????????????if ($I_start == -1)
????????????{
????????????????if (gettype($A_define) == "array")?????????>????????????????????for ($i=0;$i
?????????????i])
????????????????????????{為
?????ine[$i] = $cur[$A_define_up[$i ];?????
????????????????????????) ?????????????????????//用大寫存取
}?????????
????????????????}
????????????????elseif (trim($A_define) "")????????????//查詢列只有一個(gè)
????????????????{
????????????????????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;????//使用大量存取
?????????????????????????//下標(biāo)加一
????????????}
??????}
????(配合分頁使用)
????????????if ($I_start -1)
???????????$I_start)
????????????????{
????????????????????if ($I_end - $I_start 0)
????????????????????{
??????????????????????????????????if (gettype($A_define) ==array???????{
???????????????????????????i
??????????????????[$i] = $cur[$A_define_up[$i]];?????
???????????????????
????????????????????????????????????????????//使用數(shù)位存取
?????????????????????= $$A_define[$ i];????????//使用重點(diǎn)使用
??????????????????????i]] = $$A_define[$i];????//使用大寫存取
????????????????????????????????????????}elseif( trim($A_define) "")
???????????????????????????????????????if ($cur[$A_define_up] $$A_define)
?????????????????????????????????????????????????>??????????????????????????????????????????$A_rs[$lower][0] = $$A_define;??????????????????????????????????$A_rs[$lower][$A_define] = $$A_define;????????//使用重點(diǎn)使用
???????????????????????????????????????????????
???????????????????????????????$lower ;
????????????????????
????????????????????????break;????????///「若$ I_end-$I_start=0??表示有記錄並跳出while循環(huán)
???????????????????else
????????????????{
?????????????
????????????????}??????????????????????}?????//while的結(jié)束
????????//釋放句柄並回傳查詢資料(一個(gè)二維數(shù)組)
????????OCIFreestatement($this -> I_stmtID);
?????????>//-- -------------------------------------------------- --------------------------------------
//- -------------------------------------------------- ---------------------------------------
//????????函數(shù)名稱:db_change($ C_sql,$A_bind)
//????????作??使用:db change
//????????????sql語句
//????????????????$A_bind???????????數(shù)組型?????????
//????????返回值:布林值
//????????-------------------------------------------------- ---------------------
????function db_change($C_sql,$A_bind="")
????{
????????if (!$C_sql){ AlertExit("參數(shù)不全!");}//檢查參數(shù)
????????//連線偵測
????????稍後再連接!???????if (!$this -> I_stmtID){AlertExit(' sql格式出錯(cuò)!請聯(lián)絡(luò)程式設(shè)計(jì)師');}
????????//綁定
????????if(gettype($A_bind???????for($i=0;$ i
???????????????????$$A_bind[$i] = StripSlashes($$A_bind[$i]);????????????/ /去掉反斜線字元
????????????????$$A_bind[$i] = str_replace("","????????????for($i=0;$i
????????????}
????????} ?????A_bind;
????????????$$A_bind = StripSlashes($$A_bind);
???????????????????//濾除PHP標(biāo)示
????????????OCIBindByName ($this -> I_stmtID, ":$arrBind", &$$A_bind, -1);?????????????????
??????????
?????>????????if(!OCIExecute($this - > I_stmtID,OCI_DEFAULT))
????????{
????????????echo "執(zhí)行出錯(cuò)
";
????????????return false;
????????}
????????$I_changenum = OCINumrows($this - > I_stmtID);*/
????????//釋放句柄,傳回值
????????OCIFreement($this -> I_stc>??}
//--------------------------------------------- ---------------------------------------------
//-------------------------------------------- ----------------------------------------------
/ /????????函數(shù)名稱:db_delete($C_sql)
//????????作??使用:delete //????????所傳值:布林值
//????????備為了使用直覺,本質(zhì)呼叫db_change()
//------------------------------------ -------------------------------------------------- ----
????function db_delete($C_sql)
????{
????????return $this -> db_change($C_--);; -------------------------------------------------- ------------------------------
//--------- -------------------------------------------------- -------------------------------
//????????函式名稱:db_insert($C_sql,A_bind)
/ /????????作??用:insert
//????????參??數(shù):C_sql????????????????????sql語句
//????????????????A_bind????????????????????綁定
//????????返回值:布爾值
//????????備??注:該函數(shù)只是為了使用直觀,本質(zhì)呼叫db_change()
//----------------------------------------- -------------------------------------------------
????function db_insert($C_sql,$A_bind="")
????{
????????return $ -------------------------------------------------- ----------------------------------
//----- -------------------------------------------------- -----------------------------------
//????????函數(shù)名稱:db_update($C_sql,A_bind)
//????????作??使用:以上圖
//?????????????????????????A_bind????????????????????備??註:此函數(shù)只是為了使用直覺,本質(zhì)呼叫db_change()
//------------------------------------- -------------------------------------------------- ---
????function db_update($C_sql,$A_bind="")
????{
????????return $this -> db_change($C_sql,$A_bind);
????}
//-- -------------------------------------------------- --------------------------------------
//------------------------------------------------ ------------------------------------------
//????????函數(shù)名稱: db_commit()
//??????????用:事務(wù)提交
//????????參????備??註:無
//---- -------------------------------------------------- --------------------------------------?????
????function db_commit()
????{
return????(OCICommit($this->I_linkID));
????}
//--------------------------------------------- ---------------------------------------------
//-------------------------------------------- ----------------------------------------------
/ /????????函數(shù)名稱:db_rollback()
//????????作??使用:事務(wù)回退
//???值
//????????備??附註:無
/ /------------------------------------------------- ------------------------------------------?????
????function db_rollback()
????{
????????return??(OCIRollback($this->I_linkID));
????}????
????}???-------------------------------------------------- ----------------
?????
//----------------------- -------------------------------------------------- -----------------
//????????術(shù)語名稱:db_logoff()
//??????????使用:斷開資料庫連線??>//????????返回值:布林值
//????????備??注:無
//--------------------------- -------------------------------------------------- -------------?????
????function db_logoff()
????{
???????-------------------------------------------------- --------------------------------------
?????
//- -------------------------------------------------- ---------------------------------------
}
?>?
http://www.bkjia.com/PHPjc/315288.html

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

AJAX請求中header('Location:...')無效的原因是瀏覽器不會(huì)自動(dòng)執(zhí)行頁面跳轉(zhuǎn)。因?yàn)樵贏JAX請求中,服務(wù)器返回的302狀態(tài)碼和Location頭信息會(huì)被作為響應(yīng)數(shù)據(jù)處理,而不是觸發(fā)跳轉(zhuǎn)行為。解決方法有:1.在PHP中返回JSON數(shù)據(jù)包含跳轉(zhuǎn)URL;2.在前端AJAX回調(diào)中檢查redirect字段並用window.location.href手動(dòng)跳轉(zhuǎn);3.確保PHP輸出僅為JSON避免解析失??;4.處理跨域問題需設(shè)置合適的CORS頭;5.防止緩存干擾可加時(shí)間戳或設(shè)置cache:f

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

在PHP中查找子字符串最後一次出現(xiàn)的位置,最直接的方法是使用strrpos()函數(shù)。 1.使用strrpos()函數(shù)可直接獲取子字符串在主字符串中最後一次出現(xiàn)的起始位置索引,若未找到則返回false,語法為strrpos($haystack,$needle,$offset=0)。 2.若需忽略大小寫,可使用strripos()函數(shù)實(shí)現(xiàn)不區(qū)分大小寫的查找。 3.對於中文等多字節(jié)字符,應(yīng)使用mbstring擴(kuò)展中的mb_strrpos()函數(shù)以確保返回字符位置而非字節(jié)位置。 4.注意strrpos()返回f

在PHP中獲取字符串特定索引字符可用方括號或花括號,但推薦方括號;索引從0開始,超出範(fàn)圍訪問返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結(jié)果;實(shí)際應(yīng)用中循環(huán)訪問前應(yīng)檢查字符串長度,動(dòng)態(tài)字符串需驗(yàn)證有效性,多語言項(xiàng)目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

要防止PHP中的會(huì)話劫持,需採取以下措施:1.使用HTTPS加密傳輸並在php.ini中設(shè)置session.cookie_secure=1;2.設(shè)置安全Cookie屬性,包括httponly、secure和samesite;3.在用戶登錄或權(quán)限變更時(shí)調(diào)用session_regenerate_id(true)更換SessionID;4.限制Session生命週期,合理配置gc_maxlifetime並記錄用戶活動(dòng)時(shí)間;5.禁止將SessionID暴露在URL中,設(shè)置session.use_only

urlencode()函數(shù)用於將字符串編碼為URL安全格式,其中非字母數(shù)字字符(除-、_和.外)會(huì)被替換為百分號後跟兩位十六進(jìn)制數(shù)的形式。例如,空格轉(zhuǎn)為 號,感嘆號轉(zhuǎn)為!,而中文字符則轉(zhuǎn)換為其UTF-8編碼形式。使用時(shí)應(yīng)僅對參數(shù)值進(jìn)行編碼,而非整個(gè)URL,以避免破壞URL結(jié)構(gòu)。對於URL的其他部分如路徑段,應(yīng)使用rawurlencode()函數(shù),其將空格轉(zhuǎn)為 。處理數(shù)組參數(shù)時(shí)可使用http_build_query()自動(dòng)編碼,或手動(dòng)對每個(gè)值調(diào)用urlencode()以確保安全傳輸數(shù)據(jù)。正

在PHP中取字符串前N個(gè)字符可用substr()或mb_substr(),具體步驟如下:1.使用substr($string,0,N)截取前N個(gè)字符,適用於ASCII字符且簡單高效;2.處理多字節(jié)字符(如中文)時(shí)應(yīng)使用mb_substr($string,0,N,'UTF-8'),並確保啟用mbstring擴(kuò)展;3.若字符串含HTML或空白字符,應(yīng)先用strip_tags()去除標(biāo)籤、trim()清理空格,再截取以保證結(jié)果乾淨(jìng)。

在PHP中獲取字符串最後N個(gè)字符主要有兩種方法:1.使用substr()函數(shù),通過負(fù)數(shù)起始位置截取,適用於單字節(jié)字符;2.使用mb_substr()函數(shù),支持多語言和UTF-8編碼,避免截?cái)喾怯⑽淖址?.可選地判斷字符串長度是否足夠以處理邊界情況;4.不推薦使用strrev() substr()的組合方式,因其對多字節(jié)字符不安全且效率低。
