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

📄 adodb-mysqli.inc.php

📁 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。 它通过snmpget来获取数据
💻 PHP
📖 第 1 页 / 共 2 页
字号:
			$type = $rs->fields[1];						// split type into type(length):			$fld->scale = null;			if (preg_match("/^(.+)\((\d+),(\d+)/", $type, $query_array)) {				$fld->type = $query_array[1];				$fld->max_length = is_numeric($query_array[2]) ? $query_array[2] : -1;				$fld->scale = is_numeric($query_array[3]) ? $query_array[3] : -1;			} elseif (preg_match("/^(.+)\((\d+)/", $type, $query_array)) {				$fld->type = $query_array[1];				$fld->max_length = is_numeric($query_array[2]) ? $query_array[2] : -1;			} else {				$fld->type = $type;				$fld->max_length = -1;			}			$fld->not_null = ($rs->fields[2] != 'YES');			$fld->primary_key = ($rs->fields[3] == 'PRI');			$fld->auto_increment = (strpos($rs->fields[5], 'auto_increment') !== false);			$fld->binary = (strpos($type,'blob') !== false);			$fld->unsigned = (strpos($type,'unsigned') !== false);			if (!$fld->binary) {				$d = $rs->fields[4];				if ($d != '' && $d != 'NULL') {					$fld->has_default = true;					$fld->default_value = $d;				} else {					$fld->has_default = false;				}			}						if ($save == ADODB_FETCH_NUM) {				$retarr[] = $fld;			} else {				$retarr[strtoupper($fld->name)] = $fld;			}			$rs->MoveNext();		}				$rs->Close();		return $retarr;	}			// returns true or false	function SelectDB($dbName) 	{//	    $this->_connectionID = $this->mysqli_resolve_link($this->_connectionID);	    $this->databaseName = $dbName;	    if ($this->_connectionID) {        	$result = @mysqli_select_db($this->_connectionID, $dbName);			if (!$result) {		    	ADOConnection::outp("Select of database " . $dbName . " failed. " . $this->ErrorMsg());			}			return $result;				}	    return false;		}		// parameters use PostgreSQL convention, not MySQL	function &SelectLimit($sql,			      $nrows = -1,			      $offset = -1,			      $inputarr = false, 			      $arg3 = false,			      $secs = 0)	{		$offsetStr = ($offset >= 0) ? "$offset," : '';				if ($secs)			$rs =& $this->CacheExecute($secs, $sql . " LIMIT $offsetStr$nrows" , $inputarr , $arg3);		else			$rs =& $this->Execute($sql . " LIMIT $offsetStr$nrows" , $inputarr , $arg3);					return $rs;	}			function Prepare($sql)	{		return $sql;				$stmt = $this->_connectionID->prepare($sql);		if (!$stmt) {			echo $this->ErrorMsg();			return $sql;		}		return array($sql,$stmt);	}			// returns queryID or false	function _query($sql, $inputarr)	{	global $ADODB_COUNTRECS;				if (is_array($sql)) {			$stmt = $sql[1];			$a = '';			foreach($inputarr as $k => $v) {				if (is_string($v)) $a .= 's';				else if (is_integer($v)) $a .= 'i'; 				else $a .= 'd';			}						$fnarr =& array_merge( array($stmt,$a) , $inputarr);			$ret = call_user_func_array('mysqli_stmt_bind_param',$fnarr);			$ret = mysqli_stmt_execute($stmt);			return $ret;		}		if (!$mysql_res =  mysqli_query($this->_connectionID, $sql, ($ADODB_COUNTRECS) ? MYSQLI_STORE_RESULT : MYSQLI_USE_RESULT)) {		    if ($this->debug) ADOConnection::outp("Query: " . $sql . " failed. " . $this->ErrorMsg());		    return false;		}				return $mysql_res;	}	/*	Returns: the last error message from previous database operation	*/		function ErrorMsg() 	  {	    if (empty($this->_connectionID)) 	      $this->_errorMsg = @mysqli_error();	    else 	      $this->_errorMsg = @mysqli_error($this->_connectionID);	    return $this->_errorMsg;	  }		/*	Returns: the last error number from previous database operation	*/		function ErrorNo() 	  {	    if (empty($this->_connectionID))  	      return @mysqli_errno();	    else 	      return @mysqli_errno($this->_connectionID);	  }		// returns true or false	function _close()	  {	    @mysqli_close($this->_connectionID);	    $this->_connectionID = false;	  }	/*	* Maximum size of C field	*/	function CharMax()	{		return 255; 	}		/*	* Maximum size of X field	*/	function TextMax()	{	  return 4294967295; 	}} /*--------------------------------------------------------------------------------------	 Class Name: Recordset--------------------------------------------------------------------------------------*/class ADORecordSet_mysqli extends ADORecordSet{			var $databaseType = "mysqli";	var $canSeek = true;		function ADORecordSet_mysqli($queryID, $mode = false) 	{	  if ($mode === false) 	   { 	      global $ADODB_FETCH_MODE;	      $mode = $ADODB_FETCH_MODE;	   }	   	  switch ($mode)	    {	    case ADODB_FETCH_NUM: 	      $this->fetchMode = MYSQLI_NUM; 	      break;	    case ADODB_FETCH_ASSOC:	      $this->fetchMode = MYSQLI_ASSOC; 	      break;	    case ADODB_FETCH_DEFAULT:	    case ADODB_FETCH_BOTH:	    default:	      $this->fetchMode = MYSQLI_BOTH; 	      break;	    }	  $this->adodbFetchMode = $mode;	  $this->ADORecordSet($queryID);		}		function _initrs()	{	global $ADODB_COUNTRECS;			$this->_numOfRows = $ADODB_COUNTRECS ? @mysqli_num_rows($this->_queryID) : -1;		$this->_numOfFields = @mysqli_num_fields($this->_queryID);	}		function &FetchField($fieldOffset = -1) 	{		  $fieldnr = $fieldOffset;	  if ($fieldOffset != -1) {	    $fieldOffset = mysqli_field_seek($this->_queryID, $fieldnr);	  }	  $o = mysqli_fetch_field($this->_queryID);	  return $o;	}	function &GetRowAssoc($upper = true)	{	  if ($this->fetchMode == MYSQLI_ASSOC && !$upper) 	    return $this->fields;	  $row =& ADORecordSet::GetRowAssoc($upper);	  return $row;	}		/* Use associative array to get fields array */	function Fields($colname)	{		  if ($this->fetchMode != MYSQLI_NUM) 	    return @$this->fields[$colname];			  if (!$this->bind) {	    $this->bind = array();	    for ($i = 0; $i < $this->_numOfFields; $i++) {	      $o = $this->FetchField($i);	      $this->bind[strtoupper($o->name)] = $i;	    }	  }	  return $this->fields[$this->bind[strtoupper($colname)]];	}		function _seek($row)	{	  if ($this->_numOfRows == 0) 	    return false;	  if ($row < 0)	    return false;	  mysqli_data_seek($this->_queryID, $row);	  $this->EOF = false;	  return true;	}			// 10% speedup to move MoveNext to child class	// This is the only implementation that works now (23-10-2003).	// Other functions return no or the wrong results.	function MoveNext() 	{		if ($this->EOF) return false;		$this->_currentRow++;		$this->fields = @mysqli_fetch_array($this->_queryID,$this->fetchMode);				if (is_array($this->fields)) return true;		$this->EOF = true;		return false;	}			function _fetch()	{		$this->fields = mysqli_fetch_array($this->_queryID,$this->fetchMode);  	  	return is_array($this->fields);	}		function _close() 	{		mysqli_free_result($this->_queryID); 	  	$this->_queryID = false;		}	/*0 = MYSQLI_TYPE_DECIMAL1 = MYSQLI_TYPE_CHAR1 = MYSQLI_TYPE_TINY2 = MYSQLI_TYPE_SHORT3 = MYSQLI_TYPE_LONG4 = MYSQLI_TYPE_FLOAT5 = MYSQLI_TYPE_DOUBLE6 = MYSQLI_TYPE_NULL7 = MYSQLI_TYPE_TIMESTAMP8 = MYSQLI_TYPE_LONGLONG9 = MYSQLI_TYPE_INT2410 = MYSQLI_TYPE_DATE11 = MYSQLI_TYPE_TIME12 = MYSQLI_TYPE_DATETIME13 = MYSQLI_TYPE_YEAR14 = MYSQLI_TYPE_NEWDATE247 = MYSQLI_TYPE_ENUM248 = MYSQLI_TYPE_SET249 = MYSQLI_TYPE_TINY_BLOB250 = MYSQLI_TYPE_MEDIUM_BLOB251 = MYSQLI_TYPE_LONG_BLOB252 = MYSQLI_TYPE_BLOB253 = MYSQLI_TYPE_VAR_STRING254 = MYSQLI_TYPE_STRING255 = MYSQLI_TYPE_GEOMETRY*/	function MetaType($t, $len = -1, $fieldobj = false)	{		if (is_object($t)) {		    $fieldobj = $t;		    $t = $fieldobj->type;		    $len = $fieldobj->max_length;		}						 $len = -1; // mysql max_length is not accurate		 switch (strtoupper($t)) {		/* case 'STRING': 		 case 'CHAR':		 case 'VARCHAR': 		 case 'TINYBLOB': 		 case 'TINYTEXT': 		 case 'ENUM': 		 case 'SET': */				case MYSQLI_TYPE_TINY_BLOB :		case MYSQLI_TYPE_CHAR :		case MYSQLI_TYPE_STRING :		case MYSQLI_TYPE_ENUM :		case MYSQLI_TYPE_SET :		case 253 :		   if ($len <= $this->blobSize) return 'C';		   		/*case 'TEXT':		case 'LONGTEXT': 		case 'MEDIUMTEXT':*/		   return 'X';						   // php_mysql extension always returns 'blob' even if 'text'		   // so we have to check whether binary...		/*case 'IMAGE':		case 'LONGBLOB': 		case 'BLOB':		case 'MEDIUMBLOB':*/				case MYSQLI_TYPE_BLOB :		case MYSQLI_TYPE_LONG_BLOB :		case MYSQLI_TYPE_MEDIUM_BLOB :				   return !empty($fieldobj->binary) ? 'B' : 'X';		/*case 'YEAR':		case 'DATE': */		case MYSQLI_TYPE_DATE :		case MYSQLI_TYPE_YEAR :				   return 'D';				/*case 'TIME':		case 'DATETIME':		case 'TIMESTAMP':*/				case MYSQLI_TYPE_DATETIME :		case MYSQLI_TYPE_NEWDATE :		case MYSQLI_TYPE_TIME :		case MYSQLI_TYPE_TIMESTAMP :					return 'T';				/*case 'INT': 		case 'INTEGER':		case 'BIGINT':		case 'TINYINT':		case 'MEDIUMINT':		case 'SMALLINT': 		*/		case MYSQLI_TYPE_INT24 :		case MYSQLI_TYPE_LONG :		case MYSQLI_TYPE_LONGLONG :		case MYSQLI_TYPE_SHORT :		case MYSQLI_TYPE_TINY :				   if (!empty($fieldobj->primary_key)) return 'R';		   		   return 'I';				/*		   // Added floating-point types		   // Maybe not necessery.		 case 'FLOAT':		 case 'DOUBLE':		   //		case 'DOUBLE PRECISION':		 case 'DECIMAL':		 case 'DEC':		 case 'FIXED':*/		 default:		 	if (!is_numeric($t)) echo "<p>--- Error in type matching $t -----</p>"; 		 	return 'N';		}	} // function	} // rs class }?>

⌨️ 快捷键说明

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