国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP與數據庫連接

2024-05-04 23:05:13
字體:
來源:轉載
供稿:網友
中國最大的web開發資源網站及技術社區,
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("[email protected]","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("[email protected]","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("[email protected]","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("$[email protected]$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;
}
}
?>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长宁区| 黄梅县| 郴州市| 云龙县| 黄石市| 繁昌县| 信宜市| 沅江市| 洛川县| 英山县| 师宗县| 卓尼县| 金昌市| 莱阳市| 连平县| 乐昌市| 梁山县| 太保市| 措勤县| 汉寿县| 融水| 仪征市| 留坝县| 齐河县| 通海县| 兴安盟| 德保县| 奉节县| 黄山市| 龙岩市| 德庆县| 凤阳县| 清徐县| 饶河县| 沁源县| 大姚县| 平潭县| 松潘县| 元氏县| 瑞安市| 邵东县|