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

このドライバーの「名前」は「iSeriesAccessODBCドライバー」として定義されていることに注意してください。括弧[]の間に何を入れてもかまいません。

これで、私の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 に答える