Ciao,
non so se può fare al caso tuo, ad ogni modo io interrogo per un gestionale, non in tempo reale, un server IBM DB2 in questo modo:
Codice PHP:
class db2db {
var $dbSettings;
var $strDBId="";
function db2db() {
$this->arrSettings = $_SESSION['SETS'];
$this->getDatabase($this->arrSettings['db2']);
}
function getDatabase($arrSettings) {
$this->dbConnect($arrSettings['server'],$arrSettings['port'],$arrSettings['db'],$arrSettings['user'],$arrSettings['pass']);
if ($this->error==true) {
return false;
}
return true;
}
function dbConnect($dbserver,$dbport,$db,$dbuser,$dbpasswd) {
if (($dbserver=="") || ($dbuser=="")) {
$this->dbError=$_SESSION['LANG']['error']['dbMissingParam'];
$this->error=true;
return false;
}
$connStr="Driver={IBM DB2 ODBC DRIVER};DATABASE=$db;HOSTNAME=$dbserver;PORT=$dbport;PROTOCOL=TCPIP;UID=$dbuser;PWD=$dbpasswd;";
$this->strDBId=@db2_connect($connStr, '', '');
if(!$this->strDBId) {
$this->dbError =$_SESSION['LANG']['error']['dbConnFailed'];
$this->dbError .=db2_conn_errormsg();
$this->error=true;
return false;
}
return true;
}
function dbDisconnect() {
@db2_close($this->strDBId);
return true;
}
}
Utilizzo per comodità una classe apposta ma puoi anche estrarre i pezzi che ti servono e usarli nei singoli file.
Le query poi sono fatte in questo modo
Codice PHP:
$stmt=db2_prepare($this->strDBId, $strSQL);
if(db2_stmt_errormsg() || db2_conn_errormsg()){
$this->dbError=db2_conn_errormsg().db2_stmt_errormsg().'
'.$_SESSION['LANG']['error']['errSQLString'].':'.$strSQL;
}else{
db2_execute($stmt);
if(db2_stmt_errormsg() || db2_conn_errormsg())
$this->dbError=db2_conn_errormsg().db2_stmt_errormsg().'
'.$_SESSION['LANG']['error']['errSQLString'].':'.$strSQL;
$result=db2_fetch_array($stmt);
$row=$result;
}
Questa è per un recrod singolo. se ne estrai x basta mettere il fetch in un ciclo.