我正在尝试使用php连接db2数据库。现在,我将编写一些与此类似的代码(调用存储过程):
$proc = 'CALL MyLib.MySP(?, ?, ?)';
$stmt = db2_prepare($conn, $proc) or die("db2_prepare failed<br>");
// Define input variable values //
$paramIN1 = ...;
$paramIN2 = ...;
$paramOUT3 = "";
// Define parameters //
db2_bind_param($stmt, 1, "paramIN1", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "paramIN2", DB2_PARAM_IN);
db2_bind_param($stmt, 3, "paramOUT3", DB2_PARAM_OUT);
// Display results set //
if (db2_execute($stmt)) {
while ($row = db2_fetch_array($stmt)) {
print " {$row[0]}, {$row[1]}, {$row[5]}<br>";
}
}
连接代码:
$user = 'user';
$password = 'pass';
$hostname = 'ip';
$db = 'db';
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=$hostname;PROTOCOL=TCPIP;UID=$user;PWD=$password;DATABASE=$db;";
$conn = db2_connect($conn_string, $user, $password);
此处连接失败。 db2_conn_errormsg()返回的错误消息是:
"[IBM][CLI Driver] SQL1032N No start database manager command was issued. SQLSTATE=57019 SQLCODE=-1032"
这是一个AS / 400系统。使用odbc,我们可以毫无问题地连接和与数据库通信。
答案 0 :(得分:0)
[IBM] [CLI驱动程序]是DB2 ODBC驱动程序,而不是iSeries Access ODBC驱动程序。根据我的识别,它还需要DB2 Connect来启用与AS / 400主机的连接。
使用iSeries Access ODBC驱动程序连接失败会产生以下消息:
[IBM][iSeries Access ODBC Driver]Communication link failure. comm rc=8015 - CWBSY1006 - User ID is invalid, Password length = 0, Prompt Mode = Never, System IP Address = 127.0.0.1
检查ODBC DSN上的数据库驱动程序。
答案 1 :(得分:0)
您可以使用以下方式与db2连接:
$dbh = db2_connect('*LOCAL', $user, $password, array("i5_lib"=> $db);
如果DB2数据库和ZendServer在同一个IBM i中,那么就是'* LOCAL',否则就是DB2名称。