六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

4.與數據庫的連接

[摘要]4.據庫連接 通過PHP你可以輕松的連接到數據庫,請求數據并將其顯示在你的web站點中,甚至修改數據庫中的數據。MySQL是一種很流行的數據庫,并且在互聯網中有許多有關PHP與MySQL的教程。MySQL是免費的,這一點也許就吸引了不少人。由于其廣泛應用,我就不想在這里贅述MySQL的使用方法了。...

4.據庫連接 


通過PHP你可以輕松的連接到數據庫,請求數據并將其顯示在你的web站點中,甚至修改數據庫中的數據。MySQL是一種很流行的數據庫,并且在互聯網中有許多有關PHP與MySQL的教程。MySQL是免費的,這一點也許就吸引了不少人。由于其廣泛應用,我就不想在這里贅述MySQL的使用方法了。Oracle被大量在企業應用中采用,因此我們就利用Oracle來介紹PHP與數據庫的連接。我們當然不會提及Oracle數據庫的設計原理,原因是這已經超出了我們的討論范圍。

PHP提供了兩套函數與Oracle連接,分別是ORA_和OCI函數。其中ORA_函數略顯陳舊。OCI函數更新據說更好一些。兩者的使用語法幾乎相差無幾。如前所述,你的PHP安裝選項應該可以支持兩者的使用。

想獲得更多有關在Microsoft Windows平臺上安裝支持PHP3的Apache服務器的知識以及更多有關Oracle數據庫的知識,請查閱以下URL:www.csoft.net/~vsbabu/articles/oraphp.html。



4.1 連接



<? 

if ($conn=Ora_Logon("user@TNSNAME","password")) 

{

echo "<B>SUCCESS ! Connected to database<B>\n";



else 

{

echo "<B>Failed :-( Could not connect to database<B>\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 - <b>$conn</b><br>\n";

echo "Opening cursor ...<br>\n";

$cursor=ora_open($conn); printoraerr($cursor);

echo "Opened cursor - <b>$cursor</b><br>\n";

$qry="select user,sysdate from dual";

echo "Parsing the query <b>$qry</b> ...<br>\n";

ora_parse($cursor,$qry,0); printoraerr($cursor);

echo "Query parsed <br>\n";

echo "Executing cursor ...<br>\n";

ora_exec($cursor); printoraerr($cursor);

echo "Executed cursor<br>\n";

echo "Fetching cursor ...<br>\n";

while(ora_fetch($cursor))

{

$user=ora_getcolumn($cursor,0); printoraerr($cursor);

$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);

echo " row = <B>$user, $sysdate </B><br>\n";

}

echo "Fetched all records<br>\n";

echo "Closing cursor ...<br>\n";

ora_close($cursor);

echo "Closed cursor<br>\n";

echo "Logging off from oracle... <br>\n";

ora_logoff($conn);

echo "Logged off from oracle <br>\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)."<br>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 "

<TABLE WIDTH=\"100%\" BORDER=\"0\" CELLSPACING=\"1\" 
CELLPADDING=\"2\">

<TR>\n";

for ($i=0;$i<$w_numcols;$i++)

{

$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";

echo "\t<TH VALIGN=TOP ALIGN=$align>".ora_columnname($cursor,$i)."</TH>\n";

}

echo "</TR>\n";

while(ora_fetch($cursor))

{

echo "<TR>\n";

for ($i=0;$i<$w_numcols;$i++) 

{

$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";

if(ora_columntype($cursor,$i)=="LONG")

echo "<TD VALIGN=TOP ALIGN=$align><PRE>".

ora_getcolumn($cursor,$i)."</PRE></TD>\n";

else

echo "<TD VALIGN=TOP ALIGN=$align>".ora_getcolumn($cursor,$i)."</TD>\n";

printoraerr($cursor,$conn);

}

$numrows++;

echo "</TR>\n";

}

if ($numrows==0)

echo "<TR><TD COLSPAN=\"$w_numcols\"><B>Query 
returned no records

</B></TD></TR>\n";

else 

{

echo "<TR>\n";

echo "<TH COLSPAN=\"".($w_numcols-1)."\" ALIGN=RIGHT>Count</TH>\n";

echo "<TH ALIGN=RIGHT>$numrows</TH>\n";

echo "</TR>\n";

}

echo "</TABLE>\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 "<blockquote>

You are not authorized to enter the site

</blockquote> \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 "<blockquote>

You are not authorised to enter the site

</blockquote> \n";

exit;

}

}

?>



主站蜘蛛池模板: 日本乱人伦片中文字幕三区 | 亚洲影视一区二区 | 婷婷六月久久综合丁香一二 | 日韩一级在线观看 | 日本不卡高清视频 | 青青在线视频 | 伊人久久免费 | 日韩欧美伊人久久大香线蕉 | 欧美偷拍小视频 | 日韩在线 中文字幕 | 亚洲欧洲精品国产二码 | 日韩美女在线 | 色护士综合 | 日干夜操 | 日本中文字幕在线观看 | 一级a爰片久久毛片 | 日本免费高清视频二区 | 爽爽影院在线看 | 日韩 欧美 综合 | 正在播放麻豆 | 五月花精品视频在线观看 | 午夜免费视频观看在线播放 | 亚洲男人的天堂网站 | 亚洲欧洲一区二区三区在线 | 色综合久久久 | 最新欧美伦禁片在线观看 | 中文字幕日本在线 | 日韩精品魔镜号系列在线观看 | 日日摸夜夜添欧美一区 | 最新精品亚洲成a人在线观看 | 欧美特黄一级大黄录像 | 亚洲伊人久久大香线蕉结合 | 亚洲 欧美 国产 中文 | 欧美一级亚洲一级 | 日本视频免费在线播放 | 日韩轮理片 | 手机看片99 | 亚洲三级一区 | 亚洲xxxxx | 一二三四影视在线看片 | 在线视频 二区 |