999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

PHP連接Oracle數據庫的操作技巧

2009-12-31 00:00:00趙秀艷
考試周刊 2009年36期

摘要: 本文主要介紹了PHP連接Oracle數據庫過程中的常見問題,以及PHP、Oracle的配置環境,PHP操作Oracle數據庫的具體過程。

關鍵詞: PHPOracle數據庫操作技巧

一、配置環境

訪問Oracle 8以上的數據庫時,我們需要用到Oracle 8 Call-Interface(OCI 8)。這個擴展模塊需要Oracle 8的客戶端函數庫,因此要想連接遠程Oracle數據庫,我們還需要安裝Oracle的客戶端軟件。(該客戶端軟件可以到Oracle網站http://www.oracle.com上免費下載。)

我們可以這樣配置環境:首先,確認安裝了Oracle 8i客戶端,然后用Net 8 Assistant(客戶端軟件提供)建立一個服務命名,注意服務名是Oracle數據庫的sid,可查詢initsid文件里的server_names得到。接著,在php.ini中把“;extension=php_oci8.dll”前面的注釋符號“;”去掉,使php能夠加載支持Oracle的模塊,并把“php_oci8.dll”拷貝到windows 2000 server安裝目錄下的system 32子目錄中,如“d:\\winnt\\system32”。最后,完成上述操作后,重新啟動計算機。

二、用PHP操縱Oracle的LOB類型的數據

對PHP程序員來講,使用PHP操縱Oracle的LOB類型的數據時,最令人頭痛的莫過于使用LOB處理圖片了。下面我分別介紹一下使用PHP操作BLOB和CLOB的一些技巧。

1.PHP操作BLOB

先建立一個表用于保存圖片,用戶上傳的圖片文件存放到BLOB中。

CREATE TABLE PICTURES (

ID NUMBER,IMGTYPE,VARCHAR2(60),

DESCRIPTION VARCHAR2(100),

PICTURE BLOB);

如果要實現ID的自動增加,再建一個SEQUENCE:

CREATE SEQUENCE PIC_SEQ;

(1)PHP程序——插入部分:

$conn=OCILogon($username,$password,$sid);

在這里要注意兩點:一是用EMPTY_BLOB()函數。這是Oracle的內部函數,返回一個LOB的定位符。在插入LOB時,我們只能用這個辦法先生成一個空的LOB定位符,然后對這個定位符進行操作。EMPTY_BLOB()函數是針對BLOB類型的,對應于CLOB的是EMPTY_CLOB()。二是RETURNING后面的部分,將picture返回,讓PHP的OCI函數能夠處理。

$stmt=OCIparse($Conn,″INSERI INTO PICTURES Lid description,picture)

VALUES(pic-seq NEXTVAL,‘$description’,‘$Lob-uploodtype’,EMPTY_BLOB())

RETURNING picture INTO:PICTURE”);//生成一個本地LOB對象的描述符。

$lob=OCINewDescriptor($conn,OCI_D_LOB);

將生成的LOB對象綁定到前面SQL語句返回的定位符上。

OCIBindByName($stmt,′:PICTURE′,$lob,-1,OCI_B_BLOB);

OCIExecute($stmt);

LOB對象中存入數據。因為這里的源數據是一個文件,所以直接用LOB對象的Sawefile()方法。

(2)PHP程序——顯示部分(getpicture.php):

$conn=OCILogon($username,$password,$sid);

$stmt=OCIParse($conn,″SELECT imgtype,picture ID=$pictureid″);

if(OCIFetchInto($stmt,$result))

Header(″Content-type:″.$result);

echo $result->load();

}

可用strlen($result->load())查看圖片的大小以確定圖片是否正確存入到數據庫。

?>

2.PHP操作CLOB

Oracle有一種數據類型叫VARCHAR2,用來表示不定長的字符串。VARCHAR2也是Oracle公司推薦使用的類型。但我們使用VARCHAR2時存在一個問題:最大只能表示4000個字符,也就相當于2000個漢字。如果程序中某個字符串的長度要大于2000個漢字,用VARCHAR2就不能滿足要求了。這時候,我們可以嘗試使用CLOB,CLOB和BLOB可以表示的最大長度為4GB。

下面是示例(參考了PHP英文版的手冊):

要保存的文字

$clobtext=″different dr2″;

db connection

$conn=OCIlogon(″user″,″pw″,″TNS″);

這里原例子使用了一個存儲過程,我們也可以用上面操作BLOB的方法來實現。

如:$stmt=OCIParse($conn,″INSERT INTO table(id,clobtext) VALUES (text.NEXTVAL,,EMPTY_CLOB()) RETURNING clobtext INTO:clob″);

$sql=″begin tempclobtest_package.saveclob(:clob);end;″;

$clob=OCINewDescriptor($conn,OCI_D_LOB);

$stmt=OCIParse($conn,$sql);

OCIBindByName($stmt,′:clob′,$clob,-1,OCI_B_CLOB);

if(!OCIExecute($stmt,OCI_DEFAULT)){print_r(OCIError($stmt));}

else{echo″提交成功″;}

if($clob->save($clobtext))

{″OCICommit($conn);

echo″提交成功″;″}

else

{″print_r(OCIError($stmt));″}

釋放資源

$clob→ free();

OCIFree Statement($Stmt);

?>

以上是PHP連接Oracle數據庫操作過程中,我們經常會遇到的兩個比較復雜的問題,在這里我作了詳細的介紹,希望經過上述操作技巧的講解,能為大家解開一些困惑。

參考文獻:

[1]Luke Welling.PHP和MySql Web開發.北京:機械工業出版社,2009.

[2]陳營輝.PHP+Ajax完全自學手冊.北京:機械工業出版社,2008.

[3]李卓玲.Oracle大型數據庫及應用.吉林:高等教育出版社,2004.

[4]曹俊.PHP完全自學手冊.北京:清華大學出版社,2008.

主站蜘蛛池模板: 中国一级特黄大片在线观看| 国产精品美女网站| 精品免费在线视频| 国产91视频观看| 成人福利在线免费观看| 伊人丁香五月天久久综合| 国产成人精品午夜视频'| 亚洲v日韩v欧美在线观看| 波多野衣结在线精品二区| 亚洲国产中文精品va在线播放| 日韩亚洲综合在线| 亚洲天堂网站在线| 久久毛片基地| 亚洲毛片一级带毛片基地| 欧美成人第一页| 亚洲免费成人网| 中文字幕在线免费看| 日韩区欧美区| 欧美一区二区人人喊爽| 伊人婷婷色香五月综合缴缴情| 欧美成人精品一级在线观看| 国产极品美女在线播放| 国产91视频免费| 亚洲日韩在线满18点击进入| 美女扒开下面流白浆在线试听| 高清无码手机在线观看| 精品视频一区二区三区在线播| 91系列在线观看| 美女毛片在线| 中文毛片无遮挡播放免费| 久久人人爽人人爽人人片aV东京热 | 午夜一区二区三区| 欧美色综合网站| a级毛片网| 伊人网址在线| 国产成人精品视频一区视频二区| 久久久久久久蜜桃| 日韩第一页在线| 久久91精品牛牛| 国产精品综合久久久 | 1769国产精品免费视频| 中文成人在线视频| 91成人试看福利体验区| 女人18毛片久久| 日a本亚洲中文在线观看| 草逼视频国产| 国产视频欧美| 高清国产va日韩亚洲免费午夜电影| 国产精品女人呻吟在线观看| 精品一区二区三区无码视频无码| 久久伊人久久亚洲综合| 亚洲午夜福利精品无码不卡| 免费无码又爽又黄又刺激网站| 国产无码性爱一区二区三区| 亚洲一区二区精品无码久久久| 欧美综合中文字幕久久| 亚洲swag精品自拍一区| 国产成人精品视频一区二区电影| 国产在线八区| 国产在线观看91精品亚瑟| 久综合日韩| 午夜欧美理论2019理论| 久久天天躁狠狠躁夜夜躁| 日本黄色不卡视频| 久久久噜噜噜| 国产拍揄自揄精品视频网站| 国产又爽又黄无遮挡免费观看| 欧洲亚洲欧美国产日本高清| 亚洲a级毛片| 国产精品永久久久久| 亚洲熟女中文字幕男人总站| 国产精品美女在线| 99ri精品视频在线观看播放| 真人免费一级毛片一区二区| 国产精品刺激对白在线| 免费在线成人网| 99热国产这里只有精品无卡顿"| 夜夜拍夜夜爽| 五月天丁香婷婷综合久久| 免费福利视频网站| 亚洲精品少妇熟女| 在线欧美一区|