PHP PDO Windows for iSeries IBM DB2

时间:2015-08-10 14:59:52

标签: php pdo db2

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

对于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缺失。在尝试修复thsi时,它还重新安装了旧的IBM DB2 ODBC驱动程序连接。注意:我仍然收到错误消息。

1)IBM DB2 ODBC驱动程序是否适用于iSeries,我的连接字符串是否错误?

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

感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

两个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}");