正 文

在php5.1中使用PDO连接oracle折腾手记


www.7dspace.com  更新日期:2006-5-2 19:58:26  七度空间


pdo是新出来的东西,估计变动也较大,网上的资料可信度太低,把自己被折腾的经历写下来供各位借鉴

很早就看来对pdo的介绍,今天终于把php从4升级至5.1.2
环境 SunOS 5.9,Apache2

一路充满坎坷

1 编译安装
编译的时候指定的pdo对oci的支持  --with-pdo-oci=/oracle/product/9.2.0
make,make install一切正常

phpinfo()无信息显示,查看Apache error_log,发现如下信息

[Tue Mar 14 00:39:11 2006] [notice] child pid 4606 exit signal Segmentation fault (11)

经过无数折腾,无意在一次重启apache时发现

[Tue Mar 14 00:38:59 2006] [notice] Apache/2.0.55 (Unix) PHP/4.4.1 PHP/5.1.2 con
figured -- resuming normal operations

再看httpd.conf,发现

LoadModule php4_module        modules/libphp4.so
LoadModule php5_module        modules/libphp5.so

-_-!,php4和php5同时加载(记得php5比较智能,会去掉php4的),去掉了对php4的加载,ok

2 连接Oracle
手册里没有讲怎么连OCI
从网上看到这篇,讲了PDO连OCI
“PHP 5.1 的数据对象 (PDO) 抽象层与 Oracle”

按照去做

$dbh = new PDO("OCI:dbname=mydb", "name", "pass");

出错信息:

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver'

phpinfo里明明PDO OCI的已经装好了啊??
还是无意的改动,才发现 OCI 应该小写!!

$dbh = new PDO("oci:dbname=mydb", "name", "pass");

3 查询
写了个简单的查询

[code]$dbh = new PDO("oci:dbname=mydb", "name", "pass");

$stmt = $dbh->prepare("SELECT *  from foo");
if ($stmt->execute()) {
    while ($row = $stmt->fetch()) {
        print_r($row);
        print "<br>";
    }
}[/code]

一切正常,但字段名都是大写的,不爽,还是刚才那篇文章

$dbh->setAttribute(PDO_ATTR_CASE, PDO_CASE_LOWER);

出错:

Notice: Use of undefined constant PDO_ATTR_CASE - assumed 'PDO_ATTR_CASE'

再查pdo手册,也讲 PDO_ATTR_CASE啊,
又折腾若干,在google里某德文网站搜得,应为:

$dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);

至此,折腾完毕


上一篇:正则表达式的五个成功习惯
下一篇:让Windows系统更快更稳定的九大技巧
在php5.1中使用PDO连接oracle折腾手记 作者:Aryang 来源:csdn
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐