php - DB2 PHP 连接

标签 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/

最佳答案

我的想法是您的驱动程序名称与 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);

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

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

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

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

关于php - DB2 PHP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12839989/

相关文章:

vb.net - 需要帮忙!升级到新 PC,从 Visual Studio 2008 升级到 2013。ODBC 数据连接在我的所有项目中都已断开

php - 将目标 ='_top"添加到 php header 位置

php - 拉维尔 5 : Fetch ajax data in route and pass to controller

php - 根据 php 脚本中 db2 查询的结果插入 mysql 表

sql - 将远程客户端文件中的数据插入到 DB2 表中

ibm-midrange - RPGLE 中的过程指针 (PROCPTR)

c - as400 : C headers include

php - 从 Controller 调用数据库中的数据以使用 laravel 查看

php - 在我的数据库中检索记录的逻辑? MySQL PHP

sql - DB2 INNER JOIN OR 语句