使用 PHP 不使用 ODBC 成功连接到 DB2?

2022-01-14 00:00:00 db2 php

需要知道 1) 是否有人成功建立了连接,2) 是否使用 PHP 查询了远程 DB2 服务器,以及 3) 如果是,如何?

Need to know if 1) anyone successfully made a connection and 2)queried a remote DB2 server using PHP, and 3) if so how?

我为 db2 安装了 PECL 扩展

I installed the PECL extension for db2

<代码>[db2]扩展=ibm_db2.so

但不知道如何使用它.我找到的所有示例都使用 ODBC 样式的 dsn,我不想使用 ODBC.

but can't figure out how to use it. All the examples I find use ODBC style dsn, I don't want to use ODBC.

更新:根据此处的文档(http://www.redbooks.ibm.com/abstracts/sg247218.html)名义上可以使用 ibm_db2 驱动程序(无 ODBC),但其中描述的方法不完整或已过时.

UPDATE: According to documentation here (http://www.redbooks.ibm.com/abstracts/sg247218.html) it is nominally possible to use the ibm_db2 driver (sans ODBC) but the methodology described therein is either incomplete or outdated.

推荐答案

使用 PHP 你只有一个选择:ODBC.

Using PHP you only have one option: ODBC.

以下是关于如何在 Ubuntu 上连接到 DB2 for i(在 IBM i 上)的分步说明:

Here are step by step instructions for how to connect to DB2 for i (on the IBM i) on Ubuntu:

从 IBM 下载免费的 iSeriesAccess-6.1.0-1.2.i386.rpm 文件(您必须创建一个免费帐户才能获得它)

Download the free iSeriesAccess-6.1.0-1.2.i386.rpm file from IBM (you'll have to create a free account to get it)

将 RPM 文件转换为 Ubuntu 可以理解的内容:sudo alien iSeriesAccess-6.1.0-1.2.i386.rpm

Convert the RPM file to something Ubuntu understands: sudo alien iSeriesAccess-6.1.0-1.2.i386.rpm

安装生成的 .deb:sudo dpkg -i iseriesaccess_6.1.0-2.2_i386.deb

Install the resulting .deb: sudo dpkg -i iseriesaccess_6.1.0-2.2_i386.deb

将已安装的 iSeries 库复制到 Ubuntu 期望它们的位置:sudo cp/opt/ibm/iSeriesAccess/lib/*/usr/lib

Copy the installed iSeries libraries to where Ubuntu expects them: sudo cp /opt/ibm/iSeriesAccess/lib/* /usr/lib

编辑/etc/odbc.ini 文件以包含:

Edit the /etc/odbc.ini file to contain:

[primary]
Description             = primary
Driver                  = iSeries Access ODBC Driver
System                  = IP_ADDRESS
UserID                  = USERNAME
Password                = PASSWORD
Naming                  = 0
DefaultLibraries        = QGPL
Database                = XXXXXXXXXX
ConnectionType          = 0
CommitMode              = 2
ExtendedDynamic         = 0
DefaultPkgLibrary       = QGPL
DefaultPackage          = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression    = 1
LibraryView             = 0
AllowUnsupportedChar    = 0
ForceTranslation        = 0
Trace                   = 0

编辑/etc/odbcinst.ini 文件以包含:

Edit the /etc/odbcinst.ini file to contain:

[iSeries Access ODBC Driver]
Description     = iSeries Access for Linux ODBC Driver
Driver          = /usr/lib/libcwbodbc.so
Setup           = /usr/lib/libcwbodbcs.so
NOTE1           = If using unixODBC 2.2.11 or later and you want the 32 and 64-bit ODBC drivers to share DSN's,
NOTE2           = the following Driver64/Setup64 keywords will provide that support.
Driver64        = /usr/lib/lib64/libcwbodbc.so
Setup64         = /usr/lib/lib64/libcwbodbcs.so
Threading       = 2
DontDLClose     = 1
UsageCount      = 1

然后创建与 PDO 的连接:

And then to create the connection with PDO:

$pdo = new PDO("odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=$server;PROTOCOL=TCPIP", $username, $password);

相关文章