onunix 发表于 2012-07-02 10:46

请问PDO为什么连不上数据库

本帖最后由 onunix 于 2012-07-02 10:47 编辑

数据库环境:oracle 11g 64位window server 2003
PHP环境:32位php,运行在windows XP上。<?php
try {
   
    $dbh = new PDO('oci:dbname=//172.30.1.39:1521/orcl;charset=utf8', 'scott','neusoft');

    foreach($dbh->query('SELECT * from test') as $row) {
      print_r($row);
      print("<hr>");
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>
报的错误:Error!: SQLSTATE: 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)如果修改成<?php
try {
   
    $dbh = new PDO('oci:dbname=//172.30.1.39:1521/orcl', 'scott','neusoft');

    foreach($dbh->query('SELECT * from test') as $row) {
      print_r($row);
      print("<hr>");
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>则报错:Error!: SQLSTATE[]: pdo_oci_handle_factory: <> (ext\pdo_oci\oci_driver.c:579)

maochanglu 发表于 2012-07-03 11:22

没用过oracle。。

hbeimf 发表于 2012-07-03 18:19

好久以前用过oracle,没遇到过这种错误 ,看下oracle扩展什么的都装对了没,

cens_online 发表于 2012-07-07 14:34

貌似pdo_oci驱动中的字符集问题,重新配置php_oci 驱动,检查oracle中设置的字符集类型

xinglu1983 发表于 2012-07-09 11:13

回复 1# onunix


    貌似是编码问题,我记得 以前用orcale只能用utf8,而且在安装oracle的时候就需要指定。
页: [1]
查看完整版本: 请问PDO为什么连不上数据库