PHP PDO ODBC 连接

Posted

技术标签:

【中文标题】PHP PDO ODBC 连接【英文标题】:PHP PDO ODBC connection 【发布时间】:2013-03-27 17:02:42 【问题描述】:

我们正在尝试通过 php 中的 ODBC 创建与我们的 SQL 数据库的连接。

这是我们当前的脚本:

$cnx = new PDO("odbc:Driver=EFR;Server=localhost;Port:7004;Database=EFR;Uid=LcLfVJFLTKTCEHRO;Pwd=*********;"); 

驱动程序正在 Qlikview 中工作,它也连接到该数据库。

驱动程序实际上正在被 PHP 找到,但我们认为它无法登录。

PHP 正在返回以下错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[IM001] SQLDriverConnect: 0 No transaction control system' in C:\Program Files (x86)\EasyPHP-12.1\www\index.php:2
Stack trace:
#0 C:\Program Files (x86)\EasyPHP-12.1\www\index.php(2): PDO->__construct('odbc:Driver=EF...')
#1 main thrown in C:\Program Files (x86)\EasyPHP-12.1\www\index.php on line 2

我们希望有人可以帮助我们解决这个问题。

【问题讨论】:

试试这个作为你的连接字符串:$cnx = new PDO("odbc:Driver=EFR;Server=localhost;Port:7004;Database=EFR", 'LcLfVJFLTKTCEHRO', '*********'); 【参考方案1】:

如果您已经定义了 ODBC 并存储了密码,则可以简单地连接

$conn = new PDO("odbc:DSN_NAME") 

其中 DSN_NAME 是 ODBC 数据源的实际名称,可以是 mysql、SQL Server 或 DB2。

您可以使用以下方法测试您的连接:

try
    $conn = new PDO ("odbc:DSN_NAME");

    die(json_encode(array('outcome' => true)));

catch(PDOException $ex)
     die(json_encode(array('outcome' => false, 'message' => 'Unable to connect')));

【讨论】:

你好,DNS_NAME是什么,可以是IP吗? 使用字符串“odbc:DNS_NAME”得到"outcome":false,"message":"Unable to connect"【参考方案2】:

尝试在系统而不是用户上添加 DSN

【讨论】:

以上是关于PHP PDO ODBC 连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 pdo-odbc 连接 php 和 .mdb 的 PHP 问题

使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误

用odbc和php pdo连接impala,字符串字段为空

CodeIgniter框架连接读取MS Access数据库文件

MS SQL SERVER、PHP、PDO、ODBC:用户登录失败

PDO连接到ODBC iseries无法正常工作