php数据库连接


Posted in PHP onOctober 09, 2006

通过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  "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  dual";   
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 相关文章推荐
PHP 程序授权验证开发思路
Jul 09 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
深入array multisort排序原理的详解
Jun 18 PHP
php共享内存段示例分享
Jan 20 PHP
PHP小教程之实现双向链表
Jun 12 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 PHP
php创建图像具体步骤
Mar 13 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
基于文本的访客签到簿
Oct 09 #PHP
基于文本的搜索
Oct 09 #PHP
实现分十页分向前十页向后十页的处理
Oct 09 #PHP
实现“上一页”和“下一页按钮
Oct 09 #PHP
一个程序下载的管理程序(四)
Oct 09 #PHP
PHP下MAIL的另一解决方案
Oct 09 #PHP
一个程序下载的管理程序(二)
Oct 09 #PHP
You might like
PHP抽象类 介绍
2012/06/13 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
Python中实现switch功能实例解析
2018/01/11 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
linux下进程间通信的方式
2014/12/23 面试题
QA工程师岗位职责
2013/11/20 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
绿色环保口号
2014/06/12 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
担保书格式
2015/01/20 职场文书
喋血孤城观后感
2015/06/08 职场文书
教师节校长致辞
2015/07/31 职场文书
网吧员工管理制度
2015/08/05 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS