我试图在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}");