⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adodb-odbtp.inc.php

📁 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。 它通过snmpget来获取数据
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/*  V4.54 5 Nov 2004  (c) 2000-2004 John Lim (jlim@natsoft.com.my). All rights reserved.  Released under both BSD license and Lesser GPL library license.  Whenever there is any discrepancy between the two licenses,  the BSD license will take precedence. See License.txt.  Set tabs to 4 for best viewing.  Latest version is available at http://adodb.sourceforge.net*/// Code contributed by "stefan bogdan" <sbogdan#rsb.ro>// security - hide pathsif (!defined('ADODB_DIR')) die();define("_ADODB_ODBTP_LAYER", 2 );class ADODB_odbtp extends ADOConnection{	var $databaseType = "odbtp";	var $dataProvider = "odbtp";	var $fmtDate = "'Y-m-d'";	var $fmtTimeStamp = "'Y-m-d, h:i:sA'";	var $replaceQuote = "''"; // string to use to replace quotes	var $odbc_driver = 0;	var $hasAffectedRows = true;	var $hasInsertID = false;	var $hasGenID = true;	var $hasMoveFirst = true;	var $_genSeqSQL = "create table %s (seq_name char(30) not null unique , seq_value integer not null)";	var $_dropSeqSQL = "delete from adodb_seq where seq_name = '%s'";	var $_bindInputArray = false;	var $_useUnicodeSQL = false;	var $_canPrepareSP = false;	var $_dontPoolDBC = true;	function ADODB_odbtp()	{	}	function ServerInfo()	{		return array('description' => @odbtp_get_attr( ODB_ATTR_DBMSNAME, $this->_connectionID),		             'version' => @odbtp_get_attr( ODB_ATTR_DBMSVER, $this->_connectionID));	}	function ErrorMsg()	{		if (empty($this->_connectionID)) return @odbtp_last_error();		return @odbtp_last_error($this->_connectionID);	}	function ErrorNo()	{		if (empty($this->_connectionID)) return @odbtp_last_error_state();			return @odbtp_last_error_state($this->_connectionID);	}	function _insertid()	{	// SCOPE_IDENTITY()	// Returns the last IDENTITY value inserted into an IDENTITY column in	// the same scope. A scope is a module -- a stored procedure, trigger,	// function, or batch. Thus, two statements are in the same scope if	// they are in the same stored procedure, function, or batch.			return $this->GetOne($this->identitySQL);	}	function _affectedrows()	{		if ($this->_queryID) {			return @odbtp_affected_rows ($this->_queryID);	   } else		return 0;	}	function CreateSequence($seqname='adodbseq',$start=1)	{		//verify existence		$num = $this->GetOne("select seq_value from adodb_seq");		$seqtab='adodb_seq';		if( $this->odbc_driver == ODB_DRIVER_FOXPRO ) {			$path = @odbtp_get_attr( ODB_ATTR_DATABASENAME, $this->_connectionID );			//if using vfp dbc file			if( !strcasecmp(strrchr($path, '.'), '.dbc') )                $path = substr($path,0,strrpos($path,'\/'));           	$seqtab = $path . '/' . $seqtab;        }		if($num == false) {			if (empty($this->_genSeqSQL)) return false;			$ok = $this->Execute(sprintf($this->_genSeqSQL ,$seqtab));		}		$num = $this->GetOne("select seq_value from adodb_seq where seq_name='$seqname'");		if ($num) {			return false;		}		$start -= 1;		return $this->Execute("insert into adodb_seq values('$seqname',$start)");	}	function DropSequence($seqname)	{		if (empty($this->_dropSeqSQL)) return false;		return $this->Execute(sprintf($this->_dropSeqSQL,$seqname));	}	function GenID($seq='adodbseq',$start=1)	{		$seqtab='adodb_seq';		if( $this->odbc_driver == ODB_DRIVER_FOXPRO) {			$path = @odbtp_get_attr( ODB_ATTR_DATABASENAME, $this->_connectionID );			//if using vfp dbc file			if( !strcasecmp(strrchr($path, '.'), '.dbc') )                $path = substr($path,0,strrpos($path,'\/'));           	$seqtab = $path . '/' . $seqtab;        }		$MAXLOOPS = 100;		while (--$MAXLOOPS>=0) {			$num = $this->GetOne("select seq_value from adodb_seq where seq_name='$seq'");			if ($num === false) {				//verify if abodb_seq table exist				$ok = $this->GetOne("select seq_value from adodb_seq ");				if(!$ok) {					//creating the sequence table adodb_seq					$this->Execute(sprintf($this->_genSeqSQL ,$seqtab));				}				$start -= 1;				$num = '0';				$ok = $this->Execute("insert into adodb_seq values('$seq',$start)");				if (!$ok) return false;			}			$ok = $this->Execute("update adodb_seq set seq_value=seq_value+1 where seq_name='$seq'");			if($ok) {				$num += 1;				$this->genID = $num;				return $num;			}		}	if ($fn = $this->raiseErrorFn) {		$fn($this->databaseType,'GENID',-32000,"Unable to generate unique id after $MAXLOOPS attempts",$seq,$num);	}		return false;	}	//example for $UserOrDSN	//for visual fox : DRIVER={Microsoft Visual FoxPro Driver};SOURCETYPE=DBF;SOURCEDB=c:\YourDbfFileDir;EXCLUSIVE=NO;	//for visual fox dbc: DRIVER={Microsoft Visual FoxPro Driver};SOURCETYPE=DBC;SOURCEDB=c:\YourDbcFileDir\mydb.dbc;EXCLUSIVE=NO;	//for access : DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\path_to_access_db\base_test.mdb;UID=root;PWD=;	//for mssql : DRIVER={SQL Server};SERVER=myserver;UID=myuid;PWD=mypwd;DATABASE=OdbtpTest;	//if uid & pwd can be separate    function _connect($HostOrInterface, $UserOrDSN='', $argPassword='', $argDatabase='')	{		$this->_connectionID = @odbtp_connect($HostOrInterface,$UserOrDSN,$argPassword,$argDatabase);		if ($this->_connectionID === false) {			$this->_errorMsg = $this->ErrorMsg() ;			return false;		}		if ($this->_dontPoolDBC) {			if (function_exists('odbtp_dont_pool_dbc'))				@odbtp_dont_pool_dbc($this->_connectionID);		}		else {			$this->_dontPoolDBC = true;		}		$this->odbc_driver = @odbtp_get_attr(ODB_ATTR_DRIVER, $this->_connectionID);		$dbms = strtolower(@odbtp_get_attr(ODB_ATTR_DBMSNAME, $this->_connectionID));		$this->odbc_name = $dbms;				// Account for inconsistent DBMS names		if( $this->odbc_driver == ODB_DRIVER_ORACLE )			$dbms = 'oracle';		else if( $this->odbc_driver == ODB_DRIVER_SYBASE )			$dbms = 'sybase';		// Set DBMS specific attributes		switch( $dbms ) {			case 'microsoft sql server':				$this->databaseType = 'odbtp_mssql';				$this->fmtDate = "'Y-m-d'";				$this->fmtTimeStamp = "'Y-m-d h:i:sA'";				$this->sysDate = 'convert(datetime,convert(char,GetDate(),102),102)';				$this->sysTimeStamp = 'GetDate()';				$this->ansiOuter = true;				$this->leftOuter = '*=';				$this->rightOuter = '=*';                $this->hasTop = 'top';				$this->hasInsertID = true;				$this->hasTransactions = true;				$this->_bindInputArray = true;				$this->_canSelectDb = true;				$this->substr = "substring";				$this->length = 'len';				$this->identitySQL = 'select @@IDENTITY';				$this->metaDatabasesSQL = "select name from master..sysdatabases where name <> 'master'";				$this->_canPrepareSP = true;				break;			case 'access':				$this->databaseType = 'odbtp_access';				$this->fmtDate = "#Y-m-d#";				$this->fmtTimeStamp = "#Y-m-d h:i:sA#";				$this->sysDate = "FORMAT(NOW,'yyyy-mm-dd')";				$this->sysTimeStamp = 'NOW';                $this->hasTop = 'top';				$this->hasTransactions = false;				$this->_canPrepareSP = true;  // For MS Access only.				break;			case 'visual foxpro':				$this->databaseType = 'odbtp_vfp';				$this->fmtDate = "{^Y-m-d}";				$this->fmtTimeStamp = "{^Y-m-d, h:i:sA}";				$this->sysDate = 'date()';				$this->sysTimeStamp = 'datetime()';				$this->ansiOuter = true;                $this->hasTop = 'top';				$this->hasTransactions = false;				$this->replaceQuote = "'+chr(39)+'";				$this->true = '.T.';				$this->false = '.F.';				break;			case 'oracle':				$this->databaseType = 'odbtp_oci8';				$this->fmtDate = "'Y-m-d 00:00:00'";				$this->fmtTimeStamp = "'Y-m-d h:i:sA'";				$this->sysDate = 'TRUNC(SYSDATE)';				$this->sysTimeStamp = 'SYSDATE';				$this->hasTransactions = true;				$this->_bindInputArray = true;				$this->concat_operator = '||';				break;			case 'sybase':				$this->databaseType = 'odbtp_sybase';				$this->fmtDate = "'Y-m-d'";				$this->fmtTimeStamp = "'Y-m-d H:i:s'";				$this->sysDate = 'GetDate()';				$this->sysTimeStamp = 'GetDate()';				$this->leftOuter = '*=';				$this->rightOuter = '=*';				$this->hasInsertID = true;				$this->hasTransactions = true;				$this->identitySQL = 'select @@IDENTITY';				break;			default:				$this->databaseType = 'odbtp';				if( @odbtp_get_attr(ODB_ATTR_TXNCAPABLE, $this->_connectionID) )					$this->hasTransactions = true;				else					$this->hasTransactions = false;		}        @odbtp_set_attr(ODB_ATTR_FULLCOLINFO, TRUE, $this->_connectionID );		if ($this->_useUnicodeSQL )			@odbtp_set_attr(ODB_ATTR_UNICODESQL, TRUE, $this->_connectionID);        return true;	}	function _pconnect($HostOrInterface, $UserOrDSN='', $argPassword='', $argDatabase='')	{		$this->_dontPoolDBC = false;  		return $this->_connect($HostOrInterface, $UserOrDSN, $argPassword, $argDatabase);	}	function SelectDB($dbName)	{		if (!@odbtp_select_db($dbName, $this->_connectionID)) {			return false;		}		$this->databaseName = $dbName;		return true;	}		function &MetaTables($ttype='',$showSchema=false,$mask=false)	{	global $ADODB_FETCH_MODE;		$savem = $ADODB_FETCH_MODE;		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;		if ($this->fetchMode !== false) $savefm = $this->SetFetchMode(false);				$arr =& $this->GetArray("||SQLTables||||$ttype");				if (isset($savefm)) $this->SetFetchMode($savefm);		$ADODB_FETCH_MODE = $savem;		$arr2 = array();		for ($i=0; $i < sizeof($arr); $i++) {			if ($arr[$i][3] == 'SYSTEM TABLE' )	continue;			if ($arr[$i][2])				$arr2[] = $showSchema ? $arr[$i][1].'.'.$arr[$i][2] : $arr[$i][2];		}		return $arr2;	}		function &MetaColumns($table,$upper=true)	{	global $ADODB_FETCH_MODE;		$schema = false;		$this->_findschema($table,$schema);		if ($upper) $table = strtoupper($table);		$savem = $ADODB_FETCH_MODE;		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;		if ($this->fetchMode !== false) $savefm = $this->SetFetchMode(false);				$rs = $this->Execute( "||SQLColumns||$schema|$table" );				if (isset($savefm)) $this->SetFetchMode($savefm);		$ADODB_FETCH_MODE = $savem;		if (!$rs || $rs->EOF) {			$false = false;			return $false;		}		while (!$rs->EOF) {			//print_r($rs->fields);			if (strtoupper($rs->fields[2]) == $table) {				$fld = new ADOFieldObject();				$fld->name = $rs->fields[3];				$fld->type = $rs->fields[5];				$fld->max_length = $rs->fields[6];    			$fld->not_null = !empty($rs->fields[9]); 				$fld->scale = $rs->fields[7]; 				if (!is_null($rs->fields[12])) { 					$fld->has_default = true; 					$fld->default_value = $rs->fields[12];				}				$retarr[strtoupper($fld->name)] = $fld;			} else if (sizeof($retarr)>0)				break;			$rs->MoveNext();		}		$rs->Close();		return $retarr;	}	function &MetaPrimaryKeys($table, $owner='')	{	global $ADODB_FETCH_MODE;		$savem = $ADODB_FETCH_MODE;		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;		$arr =& $this->GetArray("||SQLPrimaryKeys||$owner|$table");		$ADODB_FETCH_MODE = $savem;		//print_r($arr);		$arr2 = array();		for ($i=0; $i < sizeof($arr); $i++) {			if ($arr[$i][3]) $arr2[] = $arr[$i][3];		}		return $arr2;	}	function &MetaForeignKeys($table, $owner='', $upper=false)	{	global $ADODB_FETCH_MODE;		$savem = $ADODB_FETCH_MODE;		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;		$constraints =& $this->GetArray("||SQLForeignKeys|||||$owner|$table");		$ADODB_FETCH_MODE = $savem;		$arr = false;		foreach($constraints as $constr) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -