Files
interactive/gms/SKBB/httpd/wwwroot/ccmonitor/inc/pgsql.inc
T
2026-08-07 17:38:18 +09:00

372 lines
7.4 KiB
PHP

<?php
class DB_Sql {
var $Host = "211.38.137.35";
var $Database = "syshost";
var $Port = "5432";
var $User = "syshost";
var $Password = "alfkzmf!?{}";
var $Link_ID = 0;
var $Query_ID = 0;
var $Record = array();
var $Row = 0;
var $Seq_Table = "db_sequence";
var $Errno = 0;
var $Error = "";
var $Debug = 0;
var $Auto_Free = 0; # Set this to 1 for automatic pg_freeresult on
# last record.
var $PConnect = 0; ## Set to 1 to use persistent database connections
function ifadd($add, $me) {
if("" != $add) return " ".$me.$add;
}
/* public: constructor */
function DB_Sql($query = "") {
$this->query($query);
}
function querySafe($string) {
$string = str_replace("'", "\'", $string);
$string = str_replace("\\", "\\\\", $string);
return $string;
}
function connect() {
if ( 0 == $this->Link_ID ) {
$cstr = "dbname=".$this->Database.
$this->ifadd($this->Host, "host=").
$this->ifadd($this->Port, "port=").
$this->ifadd($this->User, "user=").
$this->ifadd($this->Password, "password=");
if(!$this->PConnect) {
$this->Link_ID = pg_connect($cstr);
} else {
$this->Link_ID = pg_pconnect($cstr);
}
if (!$this->Link_ID) {
$this->halt("connect() failed.");
}
}
}
function close() {
pg_close($this->Link_ID);
}
function query($Query_String) {
/* No empty queries, please, since PHP4 chokes on them. */
if ($Query_String == "")
/* The empty query string is passed on from the constructor,
* when calling the class without a query, e.g. in situations
* like these: '$db = new DB_Sql_Subclass;'
*/
return 0;
$this->connect();
if ($this->Debug)
printf("<br>Debug: query = %s<br>\n", $Query_String);
$this->Query_ID = pg_Exec($this->Link_ID, $Query_String);
$this->Row = 0;
$this->Error = pg_ErrorMessage($this->Link_ID);
$this->Errno = ($this->Error == "")?0:1;
if (!$this->Query_ID) {
$this->halt("Invalid SQL: ".$Query_String);
}
return $this->Query_ID;
}
function beginTrans() {
return $this->query("begin");
}
function commitTrans() {
return $this->query("commit");
}
function rollbackTrans() {
return $this->query("rollback");
}
function next_record() {
$this->Record = @pg_fetch_array($this->Query_ID, $this->Row++);
$this->Error = pg_ErrorMessage($this->Link_ID);
$this->Errno = ($this->Error == "")?0:1;
$stat = is_array($this->Record);
if (!$stat && $this->Auto_Free) {
pg_freeresult($this->Query_ID);
$this->Query_ID = 0;
}
return $stat;
}
function seek($pos) {
$this->Row = $pos;
}
function lock($table, $mode = "write") {
if ($mode == "write") {
$result = pg_Exec($this->Link_ID, "lock table $table");
} else {
$result = 1;
}
return $result;
}
function unlock() {
return pg_Exec($this->Link_ID, "commit");
}
/* public: sequence numbers */
function nextid($seq_name) {
$this->connect();
if ($this->lock($this->Seq_Table)) {
/* get sequence number (locked) and increment */
$q = sprintf("select nextid from %s where seq_name = '%s'",
$this->Seq_Table,
$seq_name);
$id = @pg_Exec($this->Link_ID, $q);
$res = @pg_Fetch_Array($id, 0);
/* No current value, make one */
if (!is_array($res)) {
$currentid = 0;
$q = sprintf("insert into %s values('%s', %s)",
$this->Seq_Table,
$seq_name,
$currentid);
$id = @pg_Exec($this->Link_ID, $q);
} else {
$currentid = $res["nextid"];
}
$nextid = $currentid + 1;
$q = sprintf("update %s set nextid = '%s' where seq_name = '%s'",
$this->Seq_Table,
$nextid,
$seq_name);
$id = @pg_Exec($this->Link_ID, $q);
$this->unlock();
} else {
$this->halt("cannot lock ".$this->Seq_Table." - has it been created?");
return 0;
}
return $nextid;
}
function metadata($table="") {
$count = 0;
$id = 0;
$res = array();
if ($table) {
$this->connect();
$id = pg_exec($this->Link_ID, "select * from $table");
if ($id < 0) {
$this->Error = pg_ErrorMessage($id);
$this->Errno = 1;
$this->halt("Metadata query failed.");
}
} else {
$id = $this->Query_ID;
if (!$id) {
$this->halt("No query specified.");
}
}
$count = pg_NumFields($id);
for ($i=0; $i<$count; $i++) {
$res[$i]["table"] = $table;
$res[$i]["name"] = pg_FieldName ($id, $i);
$res[$i]["type"] = pg_FieldType ($id, $i);
$res[$i]["len"] = pg_FieldSize ($id, $i);
$res[$i]["flags"] = "";
}
if ($table) {
pg_FreeResult($id);
}
return $res;
}
function affected_rows() {
return pg_cmdtuples($this->Query_ID);
}
function num_rows() {
return pg_numrows($this->Query_ID);
}
function num_fields() {
return pg_numfields($this->Query_ID);
}
function nf() {
return $this->num_rows();
}
function np() {
print $this->num_rows();
}
function tf($Name) {
return $this->Record[$Name];
}
function f($Name) {
if($this->Record[$Name] == "")
{
return;
//return "&nbsp;";
}
else
{
return trim($this->Record[$Name]);
//return $this->Record[$Name];
}
}
function p($Name) {
print $this->Record[$Name];
}
function halt($msg) {
printf("</td></tr></table><b>Database error:</b> %s<br>\n", $msg);
printf("<b>PostgreSQL Error</b>: %s (%s)<br>\n",
$this->Errno,
$this->Error);
die("Session halted.");
}
function table_names() {
$this->query("select relname from pg_class where relkind = 'r' and not relname like 'pg_%'");
$i=0;
while ($this->next_record())
{
$return[$i]["table_name"]= $this->f(0);
$return[$i]["tablespace_name"]=$this->Database;
$return[$i]["database"]=$this->Database;
$i++;
}
return $return;
}
}
function _query_string($method)
{
$params = $_SERVER['QUERY_STRING'];
if( $method = "POST" )
{
if( getenv("REQUEST_METHOD") == "POST" )
{
$params = "$HTTP_POST_VARS";
$params = str_replace("+", "%20", $params);
}
}
return $params;
}
function param_remove($params, $key)
{
$str = split("&", $params);
$str_cnt = sizeof($str);
for( $i=0; $i < $str_cnt; $i++ )
{
$sub_str = split("=", $str[$i]);
if( $sub_str[0] != $key )
{
$qstring .= $str[$i]. "&";
}
}
if( $qstring != "" )
{
$qstring = substr($qstring, 0, strlen($qstring)-1);
}
return $qstring;
}
function sub_page_navigate( $page, $pagecnt, $preimg, $nextimg, $params )
{
$blocknum = (integer)(($page - 1) / 10) + 1;
$spage = ($blocknum-1) * 10 + 1;
$epage = $blocknum * 10;
if( $epage > $pagecnt)
{
$epage = $pagecnt;
}
$cur_url = $_SERVER['PHP_SELF'];
if($params != "") $params = "&".$params;
if($spage > 10) //' ÀÌÀü 10°³
{
if($preimg == "")
{
printf("<a href='".$cur_url."?page=".($spage-10).$params.">¢¸</a>&nbsp;");
}else
{
printf("<a href=".$cur_url."?page=".($spage-10).$params.">".$preimg."</a>&nbsp;");
}
}else
{
if($preimg == "")
{
printf("¢¸&nbsp;");
}else
{
printf($preimg."&nbsp;");
}
}
for($i = $spage; $i <= $epage; $i++)
{
if($i == $page)
{
printf("&nbsp;<b>".$i."</b>&nbsp;");
}else
{
printf("&nbsp;<a href=".$cur_url."?page=".$i.$params.">".$i."</a>&nbsp;");
}
}
if($epage < $pagecnt)
{
if($nextimg == "")
{
printf("&nbsp;<a href=".$cur_url."?page=".($epage+1).$params.">¢º</a>");
}else
{
printf("&nbsp;<a href=".$cur_url."?page=".($epage+1).$params.">".$nextimg."</a>");
}
}else
{
if($nextimg == "")
{
printf("&nbsp;¢º");
}else
{
printf("&nbsp;".$nextimg);
}
}
}
?>