導航:首頁 > 編程語言 > php操作oracle資料庫

php操作oracle資料庫

發布時間:2025-07-20 09:45:16

php及資料庫

PHP調用三種資料庫的方法

本文比較詳細的介紹PHP調用MySQL、ODBC以及ORACLE資料庫。

MySQL是一個小巧靈瓏的資料庫伺服器軟體,對於中、小型應用系統是非常理想的。除了支持標準的ANSI SQL語句外,最重要的是,它還支持多種平台,而在Unix/Linux系統上,MySQL支持多線程運行方式,從而能獲得相當好的性能。它和PHP、 Apache一樣,是屬於開放源代碼軟體。其官方網站是:,上面提供Windows,Linux,Unix版本的源代碼的下載。

注意,MySQL訪問函數都需要有相應的許可權才能運行。常用的相關函數介紹如下:

(1)integer mysql_connect(主機,用戶名,口令);

此函數開始一個對指定主機上的MySQL資料庫的連接。若該資料庫位於一個不同地埠,則在主機名後加上冒號和埠號。所有參數均為可選的,預設情況下分別對應為本地主機、用戶正在執行的腳本名和空。主機可以是IP地址或域名。

在腳本執行結束時,連接被自動關閉,也可以用mysql_close提前關閉。

(2)boolean mysql_create_db(資料庫名);

創建一個資料庫。注意必須用一個帶有創建資料庫許可權的帳號打開連接。

(3)boolean mysql_select_db(資料庫名,連接號);

選擇預設資料庫。

(4)integer mysql_query(SQL語句,連接號);

對指定資料庫進行查詢。如果SQL語句是select,則返回一個結果號,否則返回的值可以不理會。如果失敗,返回false.。

(5)array mysql_fetch_array(結果號);

取出下一行,返回一個數組.可以用數字下標訪問(第一個欄位是下標 0),也可以用字元串下標訪問(即使用各欄位名)。如已取了最後一行,返回 false.。

(6)mysql_fetch_row(結果號);

返回一個矩陣代表結果集中一行的所有域。每次調用都會產生下一行,直到沒有行剩下時返回false。每個域值都由一個從零開始的偏移量索引。這是從查詢中獲取結果的最快方法。

(7)integer mysql_num_rows(結果號);

返回結果集中行的數目

(8)integer mysql_num_fields(結果號);

返回結果集中域的數目。

(9)integer mysql_list_dbs();

向伺服器查詢資料庫列表。它返回一個結果指針,該指針可用於mysql_fetch_row函數及類似函數。

(10)mysql_list_tables(資料庫名);

獲取一個指向指定資料庫的表單列表的結果指針。該結果指針可用於任何從結果集中獲取行的函數。

(11)mysql_close(連接號);

關閉對資料庫的連接。連接必須是由mysql_connect打開的。該函數的使用不是嚴格必需的,因為在腳本結束時,所有非永久鏈路都會被自動關閉。

(12)mysql_pconnect(主機,用戶名,口令);

與mysql_connect完全相似,但建立一個"永久連接",該連接一經建立永不關閉,即使使用mysql_close函數或程序執行完畢也不關閉.下一次試圖建立永久連接時,系統如發現已存在一個永久連接,則直接返回該連接號而不重新創建。

下面是一個調用MYSQL資料庫並分頁顯示的例子。

<?

$pagesize = 5; //每頁顯示5條記錄

$host="localhost";

$user="user";

$password="psw";

$dbname="book"; //所查詢的庫表名;

//連接MySQL資料庫

mysql_connect("$host","$user","$password") or die("無法連接MySQL資料庫伺服器!");

$db = mysql_select_db("$dbname") or die("無法連接資料庫!");

$sql = "select count(*) as total from pagetest";//生成查詢記錄數的SQL語句

$rst = mysql_query($sql) or die("無法執行SQL語句:$sql !"); //查詢記錄數

$row = mysql_fetch_array($rst) or die("沒有更多的記錄!"); /取出一條記錄

$rowcount = $row["total"];//取出記錄數

mysql_free_result($rst) or die("無法釋放result資源!"); //釋放result資源

$pagecount = bcdiv($rowcount+$pagesize-1,$pagesize,0);//算出總共有幾頁

if(!isset($pageno)) {

$pageno = 1; //在沒有設置pageno時,預設為顯示第1頁

}

if($pageno<1) {

$pageno = 1; //若pageno比1小,則把它設置為1

}

if($pageno>$pagecount) {

$pageno = $pagecount; //若pageno比總共的頁數大,則把它設置為最後一頁

}

if($pageno>0) {

$href = eregi_replace("%2f","/",urlencode($PHP_SELF));//把$PHP_SELF轉換為可以在URL上使用的字元串,這樣的話就可以處理中文目錄或中文文件名

if($pageno>1){//顯示上一頁的褳接

echo "<a href="" . $href . "?pageno=" . ($pageno-1) . "">上一頁</a> ";

}

else{

echo "上一頁";

}

for($i=1;$i<$pageno;$i++){

echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";

}

echo $pageno . " ";

for($i++;$i<=$pagecount;$i++){

echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";

}

if($pageno<$pagecount){//顯示下一頁的褳接

echo "<a href="" . $href . "?pageno=" . ($pageno+1) . "">下一頁</a> ";

}

else{

echo "下一頁 ";

}

$offset = ($pageno-1) * $pagesize;//算出本頁第一條記錄在整個表中的位置(第一條記錄為0)

$sql = "select * from pagetest LIMIT $offset,$pagesize";//生成查詢本頁數據的SQL語句

$rst = mysql_query($sql);//查詢本頁數據

$num_fields = mysql_num_fields($rst);//取得欄位總數

$i = 0;

while($i<$num_fields){//取得所有欄位的名字

$fields[$i] = mysql_field_name($rst,$i);//取得第i+1個欄位的名字

$i++;

}

echo "<table border="1" cellspacing="0" cellpadding="0">";//開始輸出表格

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//顯示欄位名稱

echo "<th>$field_name</th>";

}

echo "</tr>";

while($row=mysql_fetch_array($rst)){//顯示本頁數據

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//顯示每個欄位的值

$field_value = $row[$field_name];

if($field_value==""){

echo "<td> </td>";

}

else{

echo "<td>$field_value</td>";

}

}

echo "</tr>";

}

echo "</table>";//表格輸出結束

mysql_free_result($rst) or die("無法釋放result資源!");//釋放result資源

}

else{

echo "目前該表中沒有任何數據!";

}

mysql_close($server) or die("無法與伺服器斷開連接!");//斷開連接並釋放資源

?>

開放資料庫連接(ODBC)已成為一種與資料庫進行通信的工業標准。PHP也提供了標準的介面,使得PHP能調用Access,SQL SERVER等資料庫。其相關函數是:

(1)integer odbc_connect(string dsn, string user, string password)

連接到一個ODBC資料庫源名字上。

(2)integer odbc_exec(integer connection, string query)或 odbc_do(integer connection, string query)

在一個連接上執行查詢。

(3)boolean odbc_fetch_row(integer result, integer row)

從一個結果集中獲取一行數據。Row參數是可選的,若為空缺,則返回下一個有效行。在結果集中不再剩餘行時返回false。

(4)boolean odbc_close(integer connection)

關閉一個資料庫的連接。若在該連接上有打開的事務,則返回一個錯誤,而且連接不會被關閉。

最後,還是看個分頁的例子:

<?

//設定每頁顯示條數

$show_num = 10;

$spages = $pages;//避免$pages後期被改變

//定義連接

$dsn = "localhost";

$user = "sa";

$password = "";

//計算總記錄數

$rs_num = "select count(*) as id from bbs where zu='0' and lei='".$lei."'";

$conn_id = odbc_connect($dsn,$user,$password);

$rnum = odbc_exec($conn_id,$rs_num);

while(odbc_fetch_row($rnum)){

$total_rs = odbc_result($rnum,"id");//將總記錄數放入$total_rs變數

}

//計算與頁有關的條數

$nnn = $total_rs / $show_num;//計算總頁數

$hnnn = intval($nnn);//將總頁數取整

$cnnnn = $nnn - $hnnn;

//計算所需總頁數

switch ($cnnn){

case "0":

$hnnn++;

$nnn = $hnnn;//總頁數

break;

default :

$nnn = $hnnn;//總頁數

break;

};

if ($nnn == 0)$nnn++;

//計算頁面改變所需的條件

$fore = $pages;

$next = $pages;

$fore -= 1;

$next += 1;

if ($fore > 0) {

echo "<a>首頁</a>";

echo "<a>前頁</a>";

};

if ($pages < $nnn) {

echo "<a>後頁</a>";

echo "<a>尾頁</a>";

};

echo "共".$nnn."頁";

$query_string = "SELECT * FROM table where condition order by you wanted order";

$cur = odbc_exec($conn_id,$query_string);

//取到循環的頂部

$cnum = ($pages-1) * $show_num;//計算當前的記錄游標的位置

//空循環到顯示記錄游標處
if ($cnum != 0){

for ($i=0;$i<=$cnum;odbc_fetch_row($cur));

};

$i=1;

//顯示記錄

while(odbc_fetch_row($cur)){

echo ;

if ($i == $show_num){//在不滿頁數時跳出程序

break;

};

$i++;

};

//關閉連接

odbc_close($conn_id);

?>

Oracle(甲骨文)是世界上最為流行的關系資料庫。它是大公司推崇的工業化的強有力的引擎。我們先看看其相關的函數:

(1)integer ora_logon(string user , string password)

開始對一個Oracle資料庫伺服器的連接。

(2)integer ora_open(integer connection)

打開給出的連接的游標。

(3)integer ora_do(integer connection, string query)

在給出的連接上執行查詢。PHP生成一個指示器,解析查詢,並執行之。

(4)integer ora_parse(integer cursor, string query)

解析一個查詢並准備好執行。

(5)boolean ora_exec(integer cursor)

執行一個先前由ora_parse函數解析過的查詢。

(6)boolean ora_fetch(integer cursor)

此函數會使得一個執行過的查詢中的行被取到指示器中。這使得您可以調用ora_getcolumn函數。

(7)string ora_getcolumn(integer cursor, integer column)

返回當前的值。列由零開始的數字索引。

(8)boolean ora_logoff(integer connection)

斷開對資料庫伺服器的鏈接。

以下是向ORACLE資料庫插入數據的示常式序:

<html>

<head><title>向ORACLE資料庫中插入數據</title></head>

<body>

<form action="<?echo $PHP_SELF;?>" method="post">

<table border="1" cellspacing="0" cellpadding="0">

<tr>

<th>ID</th>

<th>name</th>

<th>Description</th>

</tr>

<tr>

<td><input type="text" name="name" maxlength="50" size="10"></td>

<td><input type="text" name="email" maxlength="255" size="30"></td>

<td><input type="text" name="Description" maxlength="255" size="50"></td>

</tr>

<tr align="center">

<td colspan="3"><input type="submit" value="提交"><input type="reset" value="重寫"></td>

</tr>

</table>

</form>

<?

//先設置兩個環境變數ORACLE_HOME,ORACLE_SID

putenv("ORACLE_HOME=/oracle/app/oracle/proct/8.0.4");

putenv("ORACLE_SID=ora8");

//設置網頁顯示中文

putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");

if($connection=ora_logon("scott","tiger")) {

//庫表test有ID,name,Description三項

$sql = 'insert into test(ID,name,Description) values ';

$sql .= '('' . $ID . '','' . $name . '',''. $Description . '')';

if($cursor=ora_do($connect,$sql)) {

print("insert finished!");

}

$query = 'select * from test';

if($cursor=ora_do($connect,$query)) {

ora_fetch($cursor);

$content0=ora_getcolumn($cursor,0);

$content1=ora_getcolumn($cursor,1);

$content2=ora_getcolumn($cursor,2);

print("$content0");

print("$content1");

print("$content2");

ora_close($cursor);

}

ora_logoff($connection);

}

?>

</body>

</html>
通過PHP你可以輕松的連接到資料庫,請求數據並將其顯示在你的web站點中,甚至修改資料庫中的數據。 MySQL是一種很流行的資料庫,並且在互聯網中有許多有關PHP與MySQL的教程。MySQL是免費的,這一點也許就吸引了不少人。由於其廣泛應用, 我就不想在這里贅述MySQL的使用方法了。Oracle被大量在企業應用中採用,因此我們就利用Oracle來介紹PHP與資料庫的連接。我們當然不會 提及Oracle資料庫的設計原理,原因是這已經超出了我們的討論范圍。
PHP提供了兩套函數與Oracle連接,分別是ORA_和OCI函數。其中ORA_函數略顯陳舊。OCI函數更新據說更好一些。兩者的使用語法幾乎相差無幾。如前所述,你的PHP安裝選項應該可以支持兩者的使用。
想獲得更多有關在Microsoft Windows平台上安裝支持PHP3的Apache伺服器的知識以及更多有關Oracle資料庫的知識,請查閱以下URL:。
4.1 連接

if ($conn=Ora_Logon("user@TNSNAME","password"))
{
echo "SUCCESS ! Connected to database\n";
}
else
{
echo "Failed :-( Could not connect to database\n";
}
Ora_Logoff($conn);
phpinfo();
?>
以上代碼使用TNSNAME(在你的tnsnames.ora文件中指明)定義的Oracle資料庫名稱、用戶名稱和密碼連接資料庫。在成功連接的基礎上,ora_logon函數返回一個非零的連接ID並儲存在變數$conn中。

4.2 查詢

假設與資料庫已經連接就緒,下面我們就來實際的應用對資料庫的查詢。下面的代碼演示了一個連接並查詢的典型例子:
/*
* 連接資料庫並執行查詢
*/
function printoraerr($in_cur)
{
// 檢查Oracle是否出錯
// 如果存在錯誤則顯示
// 當指針被激活時每次請求Oracle後調用該函數
if(ora_errorcode($in_cur))
echo "Oracle code - ".ora_error($in_cur)."\n";
return;
}
/** 主程序 */
if (!($conn=ora_logon("user@TNSNAME","password")))
{
echo "Connection to database failed\n";
exit;
}
echo "Connected as connection - $conn
\n";
echo "Opening cursor ...
\n";
$cursor=ora_open($conn); printoraerr($cursor);
echo "Opened cursor - $cursor
\n";
$qry="select user,sysdate from al";
echo "Parsing the query $qry ...
\n";
ora_parse($cursor,$qry,0); printoraerr($cursor);
echo "Query parsed
\n";
echo "Executing cursor ...
\n";
ora_exec($cursor); printoraerr($cursor);
echo "Executed cursor
\n";
echo "Fetching cursor ...
\n";
while(ora_fetch($cursor))
{
$user=ora_getcolumn($cursor,0); printoraerr($cursor);
$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);
echo " row = $user, $sysdate
\n";
}
echo "Fetched all records
\n";
echo "Closing cursor ...
\n";
ora_close($cursor);
echo "Closed cursor
\n";
echo "Logging off from oracle...
\n";
ora_logoff($conn);
echo "Logged off from oracle
\n";
?>
(譯者註:以上代碼段缺少注釋,請讀者參考PHP Manual的Oracle資料庫函數部分)

4.3 顯示結果

以下代碼演示了怎樣查詢資料庫並將結果輸出:
function printoraerr($in_cur, $conn)
{
// 檢查Oracle是否出錯
// 如果存在錯誤則顯示
// 當指針被激活時每次請求Oracle後調用該函數
// If it encountered an error, we exit immediately
if(ora_errorcode($in_cur))
{
echo "Oracle code - ".ora_error($in_cur)."
n";
ora_logoff($conn);
exit;
}
return;
}

function exequery($w_qry,$conn)
{
$cursor=ora_open($conn); printoraerr($cursor,$conn);
ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn);
ora_exec($cursor); printoraerr($cursor,$conn);
$numrows=0;
$w_numcols=ora_numcols($cursor);
// 顯示頭部
echo "

\n";
for ($i=0;$i<$w_numcols;$i++)
{
$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";
echo "\t ".ora_columnname($cursor,$i)." \n";
}
echo "
\n";
while(ora_fetch($cursor))
{
echo " \n";
for ($i=0;$i<$w_numcols;$i++)
{
$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";
if(ora_columntype($cursor,$i)=="LONG")
echo " ".
ora_getcolumn($cursor,$i)."
\n";
else
echo " ".ora_getcolumn($cursor,$i)." \n";
printoraerr($cursor,$conn);
}
$numrows++;
echo "
\n";
}
if ($numrows==0)
echo " Query returned no records

\n";
else
{
echo " \n";
echo " Count \n";
echo " $numrows \n";
echo "
\n";
}
echo " \n";
ora_close($cursor);
return;
}

// 主程序
if(!($conn=ora_logon("user@SID","password")))
{
echo "Error: Cannot connect to database\n";
exit;
}
$qry="SELECT
deptno \"Dept\"
,empno \"Emp\"
,empnm \"Name\"
,salary \"Salary\"
FROM
employee
ORDER BY 1,2";
exequery($qry);
ora_logoff($conn);
?>
(譯者註:以上代碼段缺少注釋,請讀者參考PHP Manual的Oracle資料庫函數部分)

4.4 基於HTTP的Oracle登錄

將以下代碼加在PHP頁面代碼之前以確認Oracle登錄。注意你必須正確設定$ SID。
if(!isset($PHP_AUTH_USER))
{
Header("WWW-authenticate: basic realm=\"$SID\"");
Header("HTTP/1.0 401 Unauthorized");
$title="Login Instructions";
echo "

You are not authorized to enter the site

\n";
exit;
}
else
{
if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW)))
{
Header("WWW-authenticate: basic realm=\"$SID\"");
Header("HTTP/1.0 401 Unauthorized");
$title="Login Instructions";
echo "

You are not authorised to enter the site

\n";
exit;
}
}
?>

Ⅱ 如何php調用oracle存儲過程返回的是一個結果集,該怎麼從php頁面中吧數據循環輸出呀

如果返回值是資源的話,可以用函數mysql_fetch_array()mysql_fetch_assoc()mysql_fetch_row()中的任意一個!

Ⅲ 用PHP操縱Oracle的LOB類型的數據

《PHP+Oracle(OCI) 初步》中講了如何用PHP中的OCI函數來連接Oracle資料庫 執行一些SQL查詢及關閉資料庫連接 本文將講述另一個難度稍大的問題 用PHP的OCI函數來操縱Oracle的LOB欄位 閱讀本文需要《PHP+Oracle(OCI) 初步》一文中的知識

用過Oracle的人都知道 Oracle有一種數據類型叫VARCHAR 用來表示不定長的字元串 VARCHAR 也是Oracle公司推薦使用的類型 但使用VARCHAR 有個問題 最大隻能表示 個字元 也就相當於 個漢字 如果你的程序中某個字元的值要大於 個漢字 用VARCHAR 就不能滿足要求了 這時候 你有兩個選擇 一是用多個VARCHAR 來表示 二是用LOB欄位 這里我們來看看第二個辦法

先來大體了解一下Oracle的LOB欄位 Oracle的LOB類型分為三種 BLOB CLOB和BFILE CLOB稱為字元LOB BLOB和BFILE是用來存儲二進制數據的 CLOB和BLOB的最大長度是 GB 它們把值存放在Oracle資料庫中 BFILE和BLOB類似 但它把數據放在外部的文件中 所以它又稱為外部BLOB(External BLOB) 我想 我們對MYSQL應該都不會陌生 MYSQL中也有類似的數據類型 如TEXT和BLOB 在PHP的MYSQL函數中 對TEXT/BLOB的操作是直接的 就象其它類型的數據一樣 但在Oracle中 情況就不一樣了 Oracle把LOB當作一種特殊的數據類型來處理 在操作上不能用常規的方法 比如 不能在INSERT語句中直接把值插入到LOB欄位中 也不能用LIKE進行查找

下面就通過幾個例子來說明如何用PHP的OCI函數來插入 取出和查詢LOB數據

一 插入

不能直接用INSERT語句向LOB欄位中插入值 一般情況下 有如下的幾步 .先分析一個INSERT語句 返回一個LOB的描述符 .用OCI函數生成一個本地的LOB對象 .將LOB對象綁定到LOB描述符上 .執行INSERT語句 .給LOB對象賦值 .釋放LOB對象和SQL語句句柄

下面的這個例子是把用戶上傳的圖片文件存放到BLOB(或BFILE中 操作稍有不同)中 首先要建一個表 結構如下 CREATE TABLE PICTURES ( ID NUMBER DESCRIPTION VARCHAR ( ) MIME VARCHAR ( ) PICTURE BLOB ); 如果要實現ID的自動增加 再建一個SEQUENCE: CREATE SEQUENCE PIC_SEQ;

然後是用來處理數據的PHP程序代碼 <?php //建立Oracle資料庫連接 $conn = OCILogon($user $password $SID); //提交SQL語句給Oracle //在這里要注意的兩點 一是用EMPTY_BLOB()函數 這是Oracle的內部函數 返回一個LOB的定位符 在插入LOB時 只能用這個辦法先生成一個空的LOB定位符 然後對這個定位符進行操作 EMPTY_BLOB()函數是針對BLOB類型的 對應於CLOB的是EMPTY_CLOB() 二是RETURNING後面的部分 把picture返回 讓PHP的OCI函數能夠處理 $stmt = OCIParse($conn INSERT INTO PICTURES (id description picture) VALUES (pic_seq NEXTVAL $description $lob_upload_type EMPTY_BLOB()) RETURNING picture INTO :PICTURE ); //生成一個本地LOB對象的描述符 注意函數的第二個參數 OCI_D_LOB 表示生成一個LOB對象 其它可能的還有OCI_D_FILE和OCI_D_ROWID 分別對應於BFILE和ROWID對象 $lob = OCINewDescriptor($conn OCI_D_LOB); //將生成的LOB對象綁定到前面SQL語句返回的定位符上 OCIBindByName($stmt :PICTURE &$lob OCI_B_BLOB); OCIExecute($stmt); //向LOB對象中存入數據 因為這里的源數據是一個文件 所以直接用LOB對象的savefile()方法 LOB對象的其它方法還有 save()和load() 分別用來保存和取出數據 但BFILE類型只有一個方法就是save() if($lob >savefile($lob_upload)){ OCICommit($conn); echo 上傳成功<br> ; }else{ echo 上傳失敗<br> ; } //釋放LOB對象 OCIFreeDesc($lob); OCIFreeStatement($stmt); OCILogoff($conn);

?>

還有一個要注意的地方 LOB欄位的值最少要 個字元 所以在save()或savefile()之前 要確保值不能為空 否則 Oracle會出錯

二 取出

對一個LOB中取出數據 有兩種辦法 一是生成一個LOB對象 然後綁定到一條SELECT語句返回的定位符上 再用LOB對象的load()方法取出數據 二是直接用PHP的OCIFetch***函數 第一種方法比第二種方法要麻煩得多 所以我直接說說第二種方法 還是用上面的表

<?php $conn = OCILogon($user $password $SID); $stmt = OCIParse($conn SELECT * FROM PICTURES WHERE ID=$pictureid ); OCIExecute($stmt); //秘密就在PCIFetchInfo的第三個參數上 OCI_RETURN_LOBS 第三個參數是FETCH的模式 如果OCI_RETURN_LOBS 就直接把LOB的值放到結果數組中 而不是LOB定位符 也就不用LOB對象的load()方法了 if (OCIFetchInto($stmt $result OCI_ASSOC+OCI_RETURN_LOBS)) { echo Content type: StripSlashes($result[MIME]); echo StripSlashes($result[PICTURE]); } OCIFreeStatement($stmt); OCILogoff($conn); ?>

這個程序用來顯示放在LOB中的數據(圖片) 調用方法(假設腳本名是getpicture php) <IMG SRC= getpicture php?pictureid= ALT= 放在Oracle LOB中的圖片 >

三 查詢

前面已經提了下 對於Oracle的LOB欄位是不能用LIKE進行匹配的 怎麼辦呢?其實並不復雜 Oracle有一個匿名的程序包 叫DBMS_LOB 裡面有所有的操作LOB所需的過程

假設有象這樣一個表: CREATE TABLE ARTICLES ( ID NUMBER TITLE VARCHAR ( ) CONTENT CLOB );

文章的內容放在CONTENT欄位中

現在我們要找出所以內容中包含 PHP中文用戶 的文章 可以這么來做

<?php $conn = OCILogon($user $password $SID); //WHERE子句中用了DBMS_LOB INSTR過程 它有四個參數 前面兩個分別表示LOB的定位符(可以直接用欄位表示)和要查找的字元串 後面兩個分別表示開始的偏移量和出現的次數 要注意的是必須判斷它的返回值 也就是要大於 $stmt = OCIParse($conn SELECT * FROM ARTICLES WHERE DBMS_LOB INSTR(CONTENT PHP中文用戶 ) > ); OCIExecute($stmt); if (OCIFetchInto($stmt $result OCI_ASSOC+OCI_RETURN_LOBS)) { } OCIFreeStatement($stmt); OCILogoff($conn); ?>

Oracle還提供了許多用來操作LOB數據的過程 如LENGTH SUBSTR等等 至於它們的詳細用法 可以考慮Oracle的開發手冊

lishixin/Article/program/PHP/201311/21377

Ⅳ php中連接oracle的代碼怎麼寫

oci_connect("cxuser","caixun","caixun"); 最後一個參數是資料庫名,如果你不是遠程的,就不用寫,直接用""就可以了

Ⅳ php,pdo怎麼連接oracle資料庫

php有強大的功能不但可以支持mysql,mssql,mysqli之個我們還可以與oracle數據連接,要讓php支持oracle非常的簡單我們只要把php.ini中的;extention = php_oci8.dll分號去掉即可.


請先安裝oracle的客戶端,能夠用客戶端訪問oracle。


php支持oracle連接函數

php.ini文件中的配置,去掉 ;extention = php_oci8.dll,去掉前面的分號,重啟apache就可以了,如果不行,我們再把php目錄中的php_oci8.dll拷到windows系統的system32下面去吧.

oracle資料庫建立鏈接,代碼如下:

$conn=oci_connect('username','password',"(DEscriptION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))(CONNECT_DATA=(SID=test)))");

Ⅵ PHP如何連接oracle資料庫

只要是一提到「System.Data.OracleClient的」
連接字元串的例子:
用戶ID =用戶;數據源=伺服器/資料庫名稱;密碼=通行; - 其他與SQLSERVER是相似的,但這樣要改變的OracleConnection
SqlDataAdapter的SqlConnection的希望變為OracleDataAdapter
的SqlCommand的OracleCommand

閱讀全文

與php操作oracle資料庫相關的資料

熱點內容
linux虛擬機安裝ftp伺服器 瀏覽:413
php獲取前一頁url 瀏覽:743
安卓手機怎麼操作登錄兩個微信 瀏覽:317
創作app叫什麼 瀏覽:306
自行車電腦編程 瀏覽:559
農村院子設計用什麼app 瀏覽:287
哪個app辦卡有傭金 瀏覽:400
怎樣壓縮jpeg圖片 瀏覽:213
為什麼沒有人做公益類app 瀏覽:339
蘇荷女友是什麼APP 瀏覽:124
游戲ai演算法 瀏覽:255
優盤里隱藏的文件夾怎麼打開 瀏覽:228
安卓機多廣告怎麼辦 瀏覽:900
linux郵件伺服器sendmail 瀏覽:501
python去除中文 瀏覽:584
美居app如何去廣告 瀏覽:9
安卓控制流混淆反編譯 瀏覽:370
樁基鋼筋籠搭接區域螺旋箍加密 瀏覽:157
蘋果伺服器什麼時候存到雲上貴州 瀏覽:665
加密文件沒法解壓 瀏覽:933