DB2 PHP连接

时间:2012-10-11 12:52:16

标签: php db2 ibm-midrange

现在正在挖掘stackoverflow几天了。需要使用PHP连接到DB2数据库。以下代码不会返回错误消息或任何有用的信息,而是稍后在页面中中断Javascript。

include(TEMPLATEPATH.'/inc/library/adodb_lite/adodb.inc.php'); 
   $DBName = 'DBNAME';
   $Host = 'IPADDRESS';
   $User = 'USER';
   $Password = 'PASS';

   $db = ADONewConnection('db2');

   $dsn = "driver={IBM db2 odbc DRIVER};Database=$DBName;hostname=$Host;protocol=TCPIP;uid=$User;pwd=$Password";
     if ($db->Connect($dsn)) {
     echo "<div style='color:green;font-size:21px;'>Connection Successful.</div>";
             } else {
                 echo "<div style='color:#cc0000;font-size:21px;'>Connection Failed db->Connect(dsn)</div>";
                 echo 'SQLSTATE: '.$db->ErrorNo()."<br>";
                 echo 'Message: '.$db->ErrorMsg()."<br>";
             }

接着是http://adodb.sourceforge.net/

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

我的想法是你的驱动程序名称与odbcinst.ini文件中的名称不匹配。这是我正在使用的:

ODBCINST.INI

[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

请注意,此驱动程序的“名称”被定义为“iSeries Access ODBC Driver” - 无论您放在方括号[]之间。

现在我的PHP代码如下所示:

$this->db_connection = new PDO("odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=$this->he_database_server;PROTOCOL=TCPIP", $temp_username, $temp_password);

因此,请检查以确保您的odbcinst.ini文件中的驱动程序名称(IBM db2 odbc DRIVER)相同。

现在,如果这不能解决问题,我建议您通过在odbcinst.ini文件中添加以下内容来启用ODBC日志记录:

[ODBC]
TraceFile = /tmp/odbc.log
Trace = Yes

这会将大量信息写入日志文件,并让您清楚地知道出了什么问题。如果仍然没有使它工作,我唯一的其他建议是最基本的事情:确保用户名/密码是正确的,AS / 400可以从运行PHP的服务器等访问。