+ -
当前位置:首页 → 问答吧 → (原创)在php5.1中使用PDO连接oracle折腾手记

(原创)在php5.1中使用PDO连接oracle折腾手记

时间:2006-03-15

来源:互联网

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

pdo是新出来的东西,估计变动也较大,网上的资料可信度太低,把自己被折腾的经历写下来供各位借鉴
转载请注明出处
http://blog.csdn.net/Aryang

很早就看来对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 查询
写了个简单的查询
复制内容到剪贴板
代码:
$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>";
    }
}
一切正常,但字段名都是大写的,不爽,还是刚才那篇文章
$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);

至此,折腾完毕

作者: Aryang   发布时间: 2006-03-14

支持,原创,可是都是经验呀。

作者: Per   发布时间: 2006-03-14

对 ,支持原创!

作者: kukei   发布时间: 2006-03-17

支持原创,用ORACLE见得还真不多啊

作者: jejwe   发布时间: 2006-03-17

PDO到底怎么样?谁用过?我没用过

作者: sage   发布时间: 2006-03-17

mysql也出现这种情况

作者: bigbigant   发布时间: 2006-03-30

好文.
新的东西有时候就是一个小小的东西把人折腾的要死.

作者: dennis   发布时间: 2006-04-01

支持楼主,这都是血淋淋的经验呀。呵呵。

真是心有戚戚然。

作者: seraph   发布时间: 2006-04-03

傻啊,打开PHP源码,找到PDO,看看不就明白了,折腾个屁,还好意思拿出来说
PHP是什么你知道?PHP就是C外面包了一层解释器外衣,你的明白?

作者: books   发布时间: 2006-05-23

PHP原来是用C写的啊,谢谢牛B指点,长见识了

作者: Aryang   发布时间: 2006-06-30

9楼的无敌。

作者: qq899817   发布时间: 2006-07-16

支持楼主!
希望多发些这么好的经验!

作者: mz198424   发布时间: 2007-01-22

引用:
原帖由 books 于 2006-5-23 15:11 发表
傻啊,打开PHP源码,找到PDO,看看不就明白了,折腾个屁,还好意思拿出来说
PHP是什么你知道?PHP就是C外面包了一层解释器外衣,你的明白?
很嚣张的样子啊,最BS你这种人

作者: leehui1983   发布时间: 2007-01-26

复制内容到剪贴板
代码:
很嚣张的样子啊,最BS你这种人
好像9L的,不是从新手过来的。高能儿啊。BS YOU

作者: studyphp   发布时间: 2007-01-26

请楼主不要和这样的人一斑见识!

作者: mz198424   发布时间: 2007-01-26

:) :)

作者: goshawk   发布时间: 2007-01-28

热门下载

更多