【发布时间】:2014-07-23 07:15:00
【问题描述】:
尝试迁移到 PDO 以通过 ODBC 连接到远程数据库。
我的系统是 Windows 7 Pro,通过 FortiClient VPN 连接到远程域,并连接了隧道模式。 (在编辑中添加: 运行 PHP 5.4,所以应该默认安装 PDO。)
Windows 7 ODBC 数据源管理器中的数据源配置如下(为安全起见,部分名称已更改):
- 在 系统 DSN 下:
- 系统数据源名称 = 'TheBigDB'
- 驱动程序 = 'instantclient_11_2 中的 Oracle' (64 位)
- TNS 服务名称 = '10.10.1.20:1521/BIGDB'
- 用户 ID = 'BigDBUser'
- 所有其他设置都是安装驱动程序的默认设置
以下 PHP 非 PDO 代码能够创建可用于查询的连接:
if (!($myConn = odbc_connect('TheBigDB','BigDBUser','myPwd'))) {
echo "No ODBC connection<br />";
}
这样我就可以连接到数据库了。问题是在 PDO 中执行此操作。以下 PHP...
try {
$odbcConn = new PDO('odbc:Driver={Oracle in instantclient_11_2};Server=10.10.1.20:1521;Database=BIGDB;Uid=BigDBUser;Pwd=myPwd');
} catch (PDOException $e) {
echo 'PDO connection failed: ' . $e->getMessage();
}
... 导致 PDO 连接失败:找不到驱动程序 消息。我的第一次尝试更多地依赖于数据源管理员。看起来像这样:
try {
$odbcConn = new PDO('MyBigDB','BigDBUser','myPwd');
} catch (PDOException $e) {
echo 'PDO connection failed: ' . $e->getMessage();
}
同样的事情——找不到驱动程序。
所以这是我的问题:给定一个带有 ODBC 的 Windows 7 系统,通过 VPN 连接到一个 Oracle 数据库,似乎在没有 PDO 的情况下一切正常,我如何迁移连接参数以创建 PDO 连接? 也许一个更好的问题是为什么要使用 PDO 进行连接,但我一直在读到 PDO 更安全,所以我正在尝试使用它。
【问题讨论】:
标签: oracle pdo odbc database-connection windows-7-x64