请问PDO为什么连接不上oracle

onunix 2012-07-03 01:27:56
数据库环境Oracle 11g 64位 window server 2003
PHP环境:32位php,运行在windows XP上。
01.<?php

02.try {

03.

04. $dbh = new PDO('oci:dbname=//172.30.1.39:1521/orcl;charset=utf8', 'scott','neusoft');

05.

06. foreach($dbh->query('SELECT * from test') as $row) {

07. print_r($row);

08. print("<hr>");

09. }

10. $dbh = null;

11.} catch (PDOException $e) {

12. print "Error!: " . $e->getMessage() . "<br/>";

13. die();

14.}

15.?>
错误:
01.Error!: SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data (ext\pdo_oci\oci_driver.c:558)

如果修改成
01.<?php

02.try {

03.

04. $dbh = new PDO('oci:dbname=//172.30.1.39:1521/orcl', 'scott','neusoft');

05.

06. foreach($dbh->query('SELECT * from test') as $row) {

07. print_r($row);

08. print("<hr>");

09. }

10. $dbh = null;

11.} catch (PDOException $e) {

12. print "Error!: " . $e->getMessage() . "<br/>";

13. die();

14.}

15.?>
则报错:
01.Error!: SQLSTATE[]: pdo_oci_handle_factory: <> (ext\pdo_oci\oci_driver.c:579)
...全文
183 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2012-07-03
  • 打赏
  • 举报
回复
前者是字符集名称错了
关键在于后者,你的 oci 版本是否低于 oracle 版本?
蹲坑看月亮 2012-07-03
  • 打赏
  • 举报
回复
检查tnsnames.ora,listener.ora中,sqlnet.ora中,日志文件看看

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧