操作Oracle的php類_PHP教程
Jul 21, 2016 pm 04:06 PM
//【警告】:未經(jīng)許可請勿隨便修改
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//???
// 【文件名】:????????????????c_ora_db.inc
// 【作??用】:????????????????Oracle公用函數(shù)類
// 【作??者】:????????????????天灰
//??
// 【最后修改日期】:????????2001/05/11[cxx]??????
// 【變量定義規(guī)則】:‘C_'=字符型,‘I_'=整型,‘N_'=數(shù)字型,‘L_'=布爾型,‘A_'=數(shù)組型
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//????※db_logon()????????????????????開啟數(shù)據(jù)庫連接?????
//????※db_query()????????????????????通用select?????????????
//????※db_change()????????????????????數(shù)據(jù)庫改變的通用函數(shù)(insert,delete,update)
//????※db_insert()????????????????????insert,直接調用db_change()
//????※db_delete()????????????????????delete,直接調用db_change()
//????※db_update()????????????????????update,直接調用db_change()?????????????????
//????※db_commit()????????????????????事務遞交
//????※db_rollback()????????????????????事務回退
//????※db_logoff()????????????????????斷開數(shù)據(jù)庫連接
//------------------------------------------------------------------------------------------
Class c_ora_db
{
?????
//------------------------------------------------------------------------------------------
//????????變量定義
//------------------------------------------------------------------------------------------
????var $C_user??????????= "";??????????????//數(shù)據(jù)庫用戶名
????var $C_passwd????????= "";????????????//數(shù)據(jù)庫口令
????var $C_db????????????= "";????????????????????//數(shù)據(jù)庫名
????var $I_linkID????????= 0;??????????????????????????//連線句柄
????var $I_stmtID????????= 0;??????????????????????????//查詢句柄
????var $color?????????????="";????????????????????//全局顏色
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_logon()
//????????作??用:開啟數(shù)據(jù)庫連接
//????????參??數(shù):無
//????????返回值:連線句柄(整型)
//????????備??注:無
//------------------------------------------------------------------------------------------
????function??db_logon()????
????{????
????????$this->I_linkID =??@OCILogon($this->C_user,$this->C_passwd,$this->C_db);
????????if ($this->I_linkID == 0){AlertExit('數(shù)據(jù)庫鏈接失敗,請與DBA聯(lián)系!');}
????????return??$this->I_linkID;????
????}
//------------------------------------------------------------------------------------------
???????
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
//????????作??用:select
//????????參??數(shù):$C_sql????????????????????sql語句
//????????????????$A_define????????????????需綁定的字段。數(shù)組型?????????
//????????????????$I_start????????????????開始取記錄 -1則取出查詢的所有記錄
//????????????????$I_end????????????????????結束取紀錄
//????????返回值:二維數(shù)組($A_rs)
//????????備??注:通過數(shù)字0,1,2....可訪問對應字段的值; 或通過查詢字段名也可訪問對應字段的值
//????????????????如通過$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_sql){AlertExit("參數(shù)不全!");}//檢查參數(shù)
???????//連接檢測
???????if ($this->I_linkID == 0){AlertExit('數(shù)據(jù)庫鏈接失敗,請與DBA聯(lián)系!');}
???????//格式檢測
???????$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);?????
???????if (!$this -> I_stmtID){AlertExit(' sql格式出錯!請與程序員聯(lián)系');}
???????//如果沒指定綁定的字段,則從SQL語句中去取
???????if($A_define=="")
???????{
????????????$A_Cur = explode("select",$C_sql);
????????????$A_Cur = explode("from",$A_Cur[1]);
????????????$A_define = explode(",",$A_Cur[0]);
???????}
???????????//綁定數(shù)據(jù)庫表字段
????????if(gettype($A_define) == "array")????????????//查詢列是數(shù)組
????????{
????????????for($i=0;$i
????????????????$A_define_up[$i] = trim(strtoupper($A_define[$i]));????//大寫并去除空格
????????????}
????????????for($i=0;$i
????????????????OCIDefineByName($this -> I_stmtID,"$A_define_up[$i]",&$$A_define[$i]);????//綁定
????????????}
????????}
????????elseif(trim($A_define) "")????????????????//查詢列只有一個
????????{
????????????$A_define_up = trim(strtoupper($A_define));
????????????OCIDefineByName($this -> I_stmtID,"$A_define_up",&$$A_define);
????????}
????????//執(zhí)行綁定好的SQL語句
????????if(!OCIExecute($this -> I_stmtID))
????????{
????????????echo "執(zhí)行出錯:SQL Error:$C_sql
";
????????????return false;
????????}
????????$lower = 0;????????????????????//返回二維數(shù)組的第一維下標控制變量
????????$cnt = 0;????????????????????//開始取數(shù)標識
????????//取記錄
????????while (OCIFetchInto($this -> I_stmtID,&$cur,OCI_ASSOC))
????????{
????????????//取查詢出來的所有記錄
????????????if ($I_start == -1)
????????????{
????????????????if (gettype($A_define) == "array")????????//查詢列是數(shù)組
????????????????{
????????????????????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];????????????????????//用數(shù)字訪問
????????????????????????$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;????????????????????//用數(shù)字訪問
????????????????????$A_rs[$lower][$A_define] = $$A_define;????????//用小寫訪問
????????????????????$A_rs[$lower][$A_define_up] = $$A_define;????//用大些訪問
????????????????}
????????????????$lower++;????????????//下標加一
????????????}
????????????//取出指定記錄(配合分頁使用)
????????????if ($I_start -1)
????????????{
????????????????if ($cnt >= $I_start)
????????????????{
????????????????????$cnt++;
????????????????????if ($I_end - $I_start 0)
????????????????????{
????????????????????????$I_end--;
????????????????????????????if (gettype($A_define) == "array")
????????????????????????????{
????????????????????????????????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];????????????????????//用數(shù)字訪問
????????????????????????????????????$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;????????????????????//用數(shù)字訪問
????????????????????????????????$A_rs[$lower][$A_define] = $$A_define;????????//用小些訪問
????????????????????????????????$A_rs[$lower][$A_define_up] = $$A_define;????//用大寫訪問?????????????????????
????????????????????????????}
????????????????????????$lower++;
????????????????????}else
????????????????????{
????????????????????????break;????????//如果$I_end-$I_start=0??表示取完記錄并跳出while循環(huán)
????????????????????}?????
????????????????}else
????????????????{
????????????????????$cnt++;????????//如果$cnt????????????????}?????????????????
????????????}
????????}?????//while的結束
????????//釋放句柄并返回查詢數(shù)據(jù)(一個二維數(shù)組)
????????OCIFreestatement($this -> I_stmtID);
????????return $A_rs;??????
????} //function的結束
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_change($C_sql,$A_bind)
//????????作??用:db change
//????????參??數(shù):$C_sql????????????????????????sql語句
//????????????????$A_bind????????????????????????需綁定的字段。數(shù)組型?????????
//????????返回值:布爾值
//????????備??注:insert,delete,update通用
//------------------------------------------------------------------------------------------
????function db_change($C_sql,$A_bind="")
????{
????????if (!$C_sql){AlertExit("參數(shù)不全!");}//檢查參數(shù)
????????//連接檢測
????????if($this -> I_linkID==""){????AlertExit("我們的數(shù)據(jù)庫正忙,請稍后再連接!");}?????
????????//格式檢測
????????$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);?????
????????if (!$this -> I_stmtID){AlertExit(' sql格式出錯!請與程序員聯(lián)系');}
????????//綁定
????????if(gettype($A_bind) == "array")
????????{
????????????for($i=0;$i
????????????????global $$A_bind[$i];
????????????????$$A_bind[$i] = StripSlashes($$A_bind[$i]);????????????//去掉反斜線字元
????????????????$$A_bind[$i] = str_replace("","????????????}
????????????for($i=0;$i
????????????}
????????}
????????elseif(trim($A_bind) "")????????????????????????????????//不是數(shù)組,是字符
????????{
????????????global $$A_bind;
????????????$$A_bind = StripSlashes($$A_bind);
????????????$$A_bind = str_replace("","????????????OCIBindByName($this -> I_stmtID, ":$arrBind", &$$A_bind, -1);?????????????????
????????}
????????//執(zhí)行并檢測是否成功
????????if(!OCIExecute($this -> I_stmtID,OCI_DEFAULT))
????????{
????????????echo "執(zhí)行出錯:SQL Error:$C_sql
";
????????????return false;
????????}
????????/*//傳回受影響的行數(shù)
????????global $I_changenum;
????????$I_changenum = OCINumrows($this -> I_stmtID);*/
????????//釋放句柄,傳回值
????????OCIFreeStatement($this -> I_stmtID);
????????return true;
????}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_delete($C_sql)
//????????作??用:delete
//????????參??數(shù):C_sql????????????????????sql語句
//????????返回值:布爾值
//????????備??注:該函數(shù)只是為了使用直觀,本質調用db_change()
//------------------------------------------------------------------------------------------
????function db_delete($C_sql)
????{
????????return $this -> db_change($C_sql);
????}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_insert($C_sql,A_bind)
//????????作??用:insert
//????????參??數(shù):C_sql????????????????????sql語句
//????????????????A_bind????????????????????綁定
//????????返回值:布爾值
//????????備??注:該函數(shù)只是為了使用直觀,本質調用db_change()
//------------------------------------------------------------------------------------------
????function db_insert($C_sql,$A_bind="")
????{
????????return $this -> db_change($C_sql,$A_bind);
????}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_update($C_sql,A_bind)
//????????作??用:update
//????????參??數(shù):C_sql????????????????????sql語句
//????????????????A_bind????????????????????綁定
//????????返回值:布爾值
//????????備??注:該函數(shù)只是為了使用直觀,本質調用db_change()
//------------------------------------------------------------------------------------------
????function db_update($C_sql,$A_bind="")
????{
????????return $this -> db_change($C_sql,$A_bind);
????}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_commit()
//????????作??用:事務遞交
//????????參??數(shù):無
//????????返回值:布爾值
//????????備??注:無
//------------------------------------------------------------------------------------------?????
????function db_commit()
????{
????????return????(OCICommit($this->I_linkID));
????}?????
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_rollback()
//????????作??用:事務回退
//????????參??數(shù):無
//????????返回值:布爾值
//????????備??注:無
//------------------------------------------------------------------------------------------?????
????function db_rollback()
????{
????????return??(OCIRollback($this->I_linkID));
????}?????
//------------------------------------------------------------------------------------------
?????
//------------------------------------------------------------------------------------------
//????????函數(shù)名:db_logoff()
//????????作??用:斷開數(shù)據(jù)庫連接
//????????參??數(shù):無
//????????返回值:布爾值
//????????備??注:無
//------------------------------------------------------------------------------------------?????
????function db_logoff()
????{
????????return (OCILogoff($this->I_linkID));
????}
//------------------------------------------------------------------------------------------
?????
//------------------------------------------------------------------------------------------
}
?>?

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Input suara pengguna ditangkap dan dihantar ke backend PHP melalui API Mediarecorder JavaScript front-end; 2. PHP menjimatkan audio sebagai fail sementara dan memanggil STTAPI (seperti Pengiktirafan Suara Google atau Baidu) untuk mengubahnya menjadi teks; 3. PHP menghantar teks kepada perkhidmatan AI (seperti Openaigpt) untuk mendapatkan jawapan pintar; 4. PHP kemudian memanggil TTSAPI (seperti sintesis Baidu atau Google Voice) untuk menukar balasan ke fail suara; 5. PHP mengalir fail suara kembali ke bahagian depan untuk bermain, menyelesaikan interaksi. Seluruh proses dikuasai oleh PHP untuk memastikan hubungan lancar antara semua pautan.

Kaedah teras untuk membina fungsi perkongsian sosial dalam PHP adalah untuk menghasilkan pautan perkongsian secara dinamik yang memenuhi keperluan setiap platform. 1. Mula -mula dapatkan halaman semasa atau URL dan maklumat artikel yang ditentukan; 2. Gunakan urlencode untuk menyandikan parameter; 3. Sambutan dan menjana pautan perkongsian mengikut protokol setiap platform; 4. Pautan paparan di hujung depan untuk pengguna mengklik dan berkongsi; 5. Dinamik menghasilkan tag OG pada halaman untuk mengoptimumkan paparan kandungan perkongsian; 6. Pastikan untuk melepaskan input pengguna untuk mencegah serangan XSS. Kaedah ini tidak memerlukan pengesahan yang kompleks, mempunyai kos penyelenggaraan yang rendah, dan sesuai untuk kebanyakan keperluan perkongsian kandungan.

Untuk merealisasikan pembetulan ralat teks dan pengoptimuman sintaks dengan AI, anda perlu mengikuti langkah -langkah berikut: 1. Pilih model AI atau API yang sesuai, seperti Baidu, Tencent API atau perpustakaan NLP sumber terbuka; 2. Panggil API melalui curl atau Guzzle PHP dan memproses hasil pulangan; 3. Maklumat pembetulan ralat paparan dalam aplikasi dan membenarkan pengguna memilih sama ada untuk mengadopsinya; 4. Gunakan php-l dan php_codesniffer untuk pengesanan sintaks dan pengoptimuman kod; 5. Secara berterusan mengumpul maklum balas dan mengemas kini model atau peraturan untuk meningkatkan kesannya. Apabila memilih AIAPI, fokus pada menilai ketepatan, kelajuan tindak balas, harga dan sokongan untuk PHP. Pengoptimuman kod harus mengikuti spesifikasi PSR, gunakan cache yang munasabah, elakkan pertanyaan bulat, mengkaji semula kod secara berkala, dan gunakan x

1. Memaksimumkan nilai komersil sistem komen memerlukan menggabungkan pengiklanan pengiklanan asli, perkhidmatan nilai tambah pengguna (seperti memuat naik gambar, komen top-up), mempengaruhi mekanisme insentif berdasarkan kualiti komen, dan pematuhan data pengewangan data tanpa nama; 2. Strategi audit harus mengadopsi gabungan penapisan kata kunci dinamik pra-audit dan mekanisme pelaporan pengguna, ditambah dengan penarafan kualiti komen untuk mencapai pendedahan hierarki kandungan; 3. Anti-brushing memerlukan pembinaan pertahanan berbilang lapisan: Recaptchav3 Pengesahan tanpa sensor, Honeypot Honeypot Field Robot, IP dan Had Frekuensi Timestamp menghalang penyiraman, dan pengiktirafan corak kandungan menandakan komen yang mencurigakan, dan terus berurusan dengan serangan.

PHP memastikan pemotongan inventori atomik melalui urus niaga pangkalan data dan kunci baris forupdate untuk mengelakkan overselling serentak yang tinggi; 2. Konsistensi inventori pelbagai platform bergantung kepada pengurusan berpusat dan penyegerakan yang didorong oleh peristiwa, menggabungkan pemberitahuan API/webhook dan beratur mesej untuk memastikan penghantaran data yang boleh dipercayai; 3. Mekanisme penggera harus menetapkan inventori rendah, sifar/inventori negatif, jualan yang tidak dapat dilepaskan, kitaran penambahan dan strategi turun naik yang tidak normal dalam senario yang berbeza, dan pilih DingTalk, SMS atau orang yang bertanggungjawab e -mel mengikut urgensi, dan maklumat penggera mesti lengkap dan jelas untuk mencapai penyesuaian perniagaan dan tindak balas yang cepat.

Phpisstillrelevantinmodernenterpriseenvironments.1.modernphp (7.xand8.x) Menawarkan Perpaduan Perlengkapan, ketegangan, jitcompilation, danmodernsyntax, makeitsuatableforlarge-scaleapplications.2.phpintegratefective

Peranan utama homebrew dalam pembinaan persekitaran MAC adalah untuk memudahkan pemasangan dan pengurusan perisian. 1. Homebrew secara automatik mengendalikan kebergantungan dan merangkumi kompilasi kompleks dan proses pemasangan ke dalam arahan mudah; 2. Menyediakan ekosistem pakej perisian bersatu untuk memastikan penyeragaman lokasi pemasangan perisian dan konfigurasi; 3. Mengintegrasikan fungsi pengurusan perkhidmatan, dan dengan mudah boleh memulakan dan menghentikan perkhidmatan melalui brewservices; 4. Menaik taraf dan penyelenggaraan perisian yang mudah, dan meningkatkan keselamatan dan fungsi sistem.

Elakkan masalah pertanyaan n 1, mengurangkan bilangan pertanyaan pangkalan data dengan memuatkan data yang berkaitan terlebih dahulu; 2. Pilih hanya medan yang diperlukan untuk mengelakkan memuat entiti lengkap untuk menjimatkan memori dan jalur lebar; 3. Gunakan strategi cache yang munasabah, seperti cache sekunder doktrin atau hasil pertanyaan frekuensi tinggi Cache; 4. Mengoptimumkan kitaran hayat entiti dan panggilan jelas () secara teratur untuk membebaskan memori untuk mengelakkan limpahan memori; 5. Memastikan indeks pangkalan data wujud dan menganalisis penyata SQL yang dihasilkan untuk mengelakkan pertanyaan yang tidak cekap; 6. Lumpuhkan penjejakan perubahan automatik dalam senario di mana perubahan tidak diperlukan, dan gunakan array atau mod ringan untuk meningkatkan prestasi. Penggunaan ORM yang betul memerlukan menggabungkan pemantauan SQL, caching, pemprosesan batch dan pengoptimuman yang sesuai untuk memastikan prestasi aplikasi sambil mengekalkan kecekapan pembangunan.
