PHP PDO Windows for iSeries IBM DB2


PHP PDO Windows for iSeries IBM DB2

我试图在Windows 7(64位)上获得PDO连接(php 5.4)以连接到iSeries IBM AS/400。我的最终目标是使用Yii2,它使用PDO。

对于PDO驱动程序兼容性,我使用了php5.4,因为php5.5无法为IBM_DB2加载PDO扩展。我最初使用PDO运行IBM DB2 odbc驱动程序,使用以下连接字符串:

 try {
  $dbc = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};
         DATABASE=MYDB;"."HOSTNAME=myhost;", "myuser", "mypassword");
 } catch (PDOException $e) {
     print "Error!: " . $e->getMessage(). "<br/>";
     die();
 }

…但是我收到了主机的连接错误。也许这是错误的驱动程序的iSeries?

然后我在IBM I Access for Windows的安装中发现了一个iSeries Access ODBC驱动程序,并认为这可能是所需的驱动程序。我必须执行一次系统恢复才能使iSeries Access ODBC驱动程序工作,但是恢复卸载了另一个IBM DB2 ODBC驱动程序。iSeries Access ODBC驱动程序现在正确显示。

但是,现在PDO扩展加载失败。它抱怨丢失了db2cli.dll。为了解决这个问题,它还重新安装了旧的IBM DB2 ODBC驱动程序连接。注意:我仍然得到错误信息。

1) IBM DB2 ODBC驱动程序是否可以与iSeries一起工作,而我只是连接字符串错误?

2)丢失的db2cli.dll消息是否表明PDO连接确实绑定到IBM DB2 ODBC驱动程序?我想知道iAccess ODBC驱动程序是否可以/应该与PDO扩展一起使用。

任何帮助都是感激的。谢谢你。

需要两个ODBC驱动程序,并且连接字符串错误。

1)要删除db2cli.dll消息,必须从IBM下载odbc cli驱动程序(除了iSeries odbc驱动程序的Client Access 7.1.zip之外),然后必须手动更新路径以指向db2cli.dll文件。

2)连接字符串如下:(包括大括号)

$dbc = new PDO("odbc:DRIVER={iSeries Access ODBC DRIVER}; ", 
    "SYSTEM={foobar}; ",  
    "DATABASE={dbname}; ", 
    "UID={foo}; ", 
    "PWD={bar}");