【问题标题】:PHP PDO Windows for iSeries IBM DB2适用于 iSeries IBM DB2 的 PHP PDO Windows
【发布时间】:2015-11-02 13:34:34
【问题描述】:

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

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

 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 扩展一起使用。

感谢任何帮助。谢谢。

【问题讨论】:

标签: php pdo db2


【解决方案1】:

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

【讨论】:

  • 为什么除了 IBM i Access 驱动程序之外还需要辅助 ODBC 驱动程序?
  • @WarrenT 如果没有链接到 IBM DB2 ODBC 驱动程序的 db2cli.dll 文件,pdo 扩展将无法加载。如果不使用 PDO,则不需要。
  • @Cymbals 你确定那个连接字符串吗? PDO 只接受三个参数,第四个是一个数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多