通过PHP你可以轻松的连接到数据库请求数据并将其显示在你的web站点中甚至修改数据库中的数据MySQL是一种很流行的数据库并且在互联网中有许多有关PHP与MySQL的教程MySQL是免费的这一点也许就吸引了不少人由于其广泛应用我就不想在这里赘述MySQL的使用方法了Oracle被大量在企业应用中采用因此我们就利用Oracle来介绍PHP与数据库的连接我们当然不会提及Oracle数据库的设计原理原因是这已经超出了我们的讨论范围
PHP提供了两套函数与Oracle连接分别是ORA_和OCI函数其中ORA_函数略显陈旧OCI函数更新据说更好一些两者的使用语法几乎相差无几你的PHP安装选项应该可以支持两者的使用
连接
<? if ($conn=Ora_Logon(user@TNSNAMEpassword))
{ echo SUCCESS ! Connected to database\n;
}else
{echo Failed :( Could not connect to database\n;}
Ora_Logoff($conn);
phpinfo();
?>
以上代码使用TNSNAME(在你的tnsnamesora文件中指明)定义的Oracle数据库名称用户名称和密码连接数据库在成功连接的基础上ora_logon函数返回一个非零的连接ID并储存在变量$conn中
查询
假设与数据库已经连接就绪下面我们就来实际的应用对数据库的查询下面的代码演示了一个连接并查询的典型例子
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@TNSNAMEpassword)))
{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 usersysdate from dual;
echo Parsing the query $qry \n;
ora_parse($cursor$qry); 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); printoraerr($cursor);
$sysdate=ora_getcolumn($cursor); 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;
?>
显示结果
以下代码演示了怎样查询数据库并将结果输出
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); printoraerr($cursor$conn);
ora_exec($cursor); printoraerr($cursor$conn);
$numrows=;
$w_numcols=ora_numcols($cursor);
// 显示头部
echo \n;
for ($i=;$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=;$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==)
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@SIDpassword)))
{
echo Error: Cannot connect to database\n;
exit;
}
$qry=SELECT
deptno \Dept\
empno \Emp\
empnm \Name\
salary \Salary\
FROM
employee
ORDER BY ;
exequery($qry);
ora_logoff($conn);
?>
基于HTTP的Oracle登录
将以下代码加在PHP页面代码之前以确认Oracle登录注意你必须正确设定$ SID
if(!isset($PHP_AUTH_USER))
{
Header(WWWauthenticate: basic realm=\$SID\);
Header(HTTP/ 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(WWWauthenticate: basic realm=\$SID\);
Header(HTTP/ Unauthorized);
$title=Login Instructions;
echo
You are not authorised to enter the site
\n;
exit;
}}
?>