";
COpt::savesqlrequest($query);
if($DB_TYPE == "MYSQL")
{
if(is_numeric($limit))
{
$query .= ' limit '.intval($limit);
}
$result=mysql_query($query,$DB);
if(!$result)
{
echo "Error in query [$query] [".mysql_error()."]";
}
return $result;
}
if($DB_TYPE == "POSTGRESQL")
{
if(is_numeric($limit))
{
$query .= ' limit '.intval($limit);
}
$result=pg_exec($DB,$query);
return $result;
}
if($DB_TYPE == "ORACLE")
{
if(is_numeric($limit))
{
$query = 'select * from ('.$query.') where rownum<'.intval($limit);
}
$stid=OCIParse($DB,$query);
if(!$stid)
{
$e=@ocierror();
error("SQL error [".$e["message"]."] in [".$e["sqltext"]."]");
}
$result=@OCIExecute($stid);
if(!$result)
{
$e=ocierror($stid);
error("SQL error [".$e["message"]."] in [".$e["sqltext"]."]");
}
return $stid;
}
}
function DBexecute($query, $skip_error_messages=0)
{
global $DB,$DB_TYPE;
// echo $query,"
";
COpt::savesqlrequest($query);
$result = FALSE;
if($DB_TYPE == "MYSQL")
{
$result=mysql_query($query,$DB);
if(!$result && $skip_error_messages==0)
{
error("SQL error: ".mysql_error());
error("Query: $query");
}
}
else if($DB_TYPE == "POSTGRESQL")
{
$result=pg_exec($DB,$query);
}
else if($DB_TYPE == "ORACLE")
{
return DBselect($query);
}
//SDI("DBexecute($query) = '".$result."'");
return $result;
}
function DBfetch($cursor)
{
global $DB_TYPE;
if($DB_TYPE == "MYSQL")
{
$row=mysql_fetch_array($cursor);
return $row;
}
if($DB_TYPE == "POSTGRESQL")
{
$row=pg_fetch_array($cursor);
return $row;
}
if($DB_TYPE == "ORACLE")
{
// echo "DBfetch
";
if(!ocifetchinto($cursor, $row, OCI_ASSOC+OCI_NUM+OCI_RETURN_NULLS))
{
return FALSE;
}
else
{
$result=array();
$keys = (array_keys($row));
foreach ($keys as $k)
{
$result[strtolower($k)]=$row[$k];
}
}
return $result;
}
return FALSE;
}
function get_field($result,$rownum,$fieldnum)
{
global $DB_TYPE;
if($DB_TYPE == "MYSQL")
{
mysql_data_seek($result,$rownum);
$row=mysql_fetch_row($result);
return $row[$fieldnum];
}
if($DB_TYPE == "POSTGRESQL")
{
$row=pg_fetch_row($result,$rownum);
if(!$row)
{
echo "Error getting row";
exit;
}
return $row[$fieldnum];
}
if($DB_TYPE == "ORACLE")
{
$result=FALSE;
}
}
/*
function DBinsert_id($result,$table,$field)
{
global $DB,$DB_TYPE;
if($DB_TYPE == "MYSQL")
{
return mysql_insert_id($DB);
}
if($DB_TYPE == "POSTGRESQL")
{
$oid=pg_getlastoid($result);
$sql="select $field from $table where oid=$oid";
$result=DBselect($sql);
return get_field($result,0,0);
}
if($DB_TYPE == "ORACLE")
{
$res = DBfetch(DBselect('select '.$table.'_'.$field.'.currval from dual'));
return $res[0];
}
}
*/
/* string value prepearing */
if($DB_TYPE == "ORACLE") {
function zbx_dbstr($var) {
return "'".ereg_replace('\'','\'\'',$var)."'";
}
} else {
function zbx_dbstr($var) {
return "'".addslashes($var)."'";
}
}
function DBid2nodeid($id_name)
{
return '('.$id_name.' div 100000000000000)';
}
function id2nodeid($id_var)
{
return (int)($id_var / 100000000000000);
}
function get_dbid($table,$field)
{
global $ZBX_CURNODEID;
$result=DBselect("select max($field) as id from $table where ".DBid2nodeid($field)." in (".$ZBX_CURNODEID.")");
$row=DBfetch($result);
if($row && !is_null($row["id"]))
{
return ++$row["id"];
}
else
{
return $ZBX_CURNODEID*100000000000000+1;
}
}
?>