2

几天来一直在研究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/

4

2 回答 2

2

尝试使用这个

http://www.sitepoint.com/php-database-db2/

于 2012-10-11T12:57:24.340 回答
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 驱动程序”——无论您放在括号 [] 之间的任何内容。

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

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

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

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

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

这会将大量信息写入日志文件,并让您很好地了解问题所在。如果仍然无法正常工作,我唯一的其他建议是最基本的:确保用户名/密码正确,可以从运行 PHP 的服务器访问 AS/400,等等。

于 2012-10-11T14:02:54.500 回答