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

📄 adodb-mysqli.inc.php

📁 PhpWiki是sourceforge的一个开源项目
💻 PHP
📖 第 1 页 / 共 2 页
字号:
		if ($rs === false) break;		$retarr = array();		while (!$rs->EOF){		  $fld = new ADOFieldObject();		  $fld->name = $rs->fields[0];		  $fld->type = $rs->fields[1];		  // split type into type(length):		  if (preg_match("/^(.+)\((\d+)\)$/", $fld->type, $query_array))		    {		      $fld->type = $query_array[1];		      $fld->max_length = $query_array[2];		    }		  else		    {		      $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($fld->type,'blob') !== false);		  if (!$fld->binary) 		    {		      $d = $rs->fields[4];		      $d = $rs->fields['Default'];		      if ($d != "" && $d != "NULL")			{			  $fld->has_default = true;			  $fld->default_value = $d;			} 		      else 			{			  $fld->has_default = false;			}		    }		  $retarr[strtoupper($fld->name)] = $fld;			  $rs->MoveNext();		}		break;	      case ADODB_FETCH_ASSOC:	      case ADODB_FETCH_DEFAULT:	      case ADODB_FETCH_BOTH:		$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;		$rs = $this->Execute(sprintf($this->metaColumnsSQL,					     $table));		$ADODB_FETCH_MODE = $save;		if ($rs === false) break;		$retarr = array();		while (!$rs->EOF){		  $fld = new ADOFieldObject();		  $fld->name = $rs->fields['Field'];		  $fld->type = $rs->fields['Type'];						  // split type into type(length):		  if (preg_match("/^(.+)\((\d+)\)$/", $fld->type, $query_array))		    {		      $fld->type = $query_array[1];		      $fld->max_length = $query_array[2];		    }		  else		    {		      $fld->max_length = -1;		    }		  $fld->not_null = ($rs->fields['Null'] != 'YES');		  $fld->primary_key = ($rs->fields['Key'] == 'PRI');		  $fld->auto_increment = (strpos($rs->fields['Extra'], 'auto_increment') !== false);		  $fld->binary = (strpos($fld->type,'blob') !== false);		  if (!$fld->binary) 		    {		      $d = $rs->fields['Default'];		      if ($d != "" && $d != "NULL")			{			  $fld->has_default = true;			  $fld->default_value = $d;			} 		      else 			{			  $fld->has_default = false;			}		    }		  $retarr[strtoupper($fld->name)] = $fld;			  $rs->MoveNext();		}		break;	      default:	      }	    	    if ($rs === false) return false;	    $rs->Close();	    return $retarr;		  }	  return false;	}			// 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 = mysqli_prepare($this->_connectionID,$sql);		if (!$stmt) return false;		return array($sql,$stmt);	}			// returns queryID or false	function _query($sql, $inputarr)	{	global $ADODB_COUNTRECS;			if (is_array($sql)) {			$stmt = $sql[1];			foreach($inputarr as $k => $v) {				if (is_string($v)) $a[] = MYSQLI_BIND_STRING;				else if (is_integer($v)) $a[] = MYSQLI_BIND_INT; 				else $a[] = MYSQLI_BIND_DOUBLE;								$fnarr =& array_merge( array($stmt,$a) , $inputarr);				$ret = call_user_func_array('mysqli_bind_param',$fnarr);			}			$ret = mysqli_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_ASSOC; 	      break;	    }	  $this->ADORecordSet($queryID);		}		function _initrs()	{	    // mysqli_num_rows only return correct number, depens	    // on the use of mysql_store_result and mysql_use_result	    if (!$this->Connection->executeOnly) {			$this->_numOfRows = @mysqli_num_rows($this->_queryID);			$this->_numOfFields = @mysqli_num_fields($this->_queryID);	    }	    else {			$this->_numOfRows = 0;			$this->_numOfFields = 0;	    }	}		function &FetchField($fieldOffset = -1) 	{		  $fieldnr = $fieldOffset;	  if ($fieldOffset != -1) {	    $fieldOffset = mysqi_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++;	  switch($this->fetchMode)	    {	    case MYSQLI_NUM:	      $this->fields = mysqli_fetch_array($this->_queryID);	      break;	    case MYSQLI_ASSOC:	    case MYSQLI_BOTH:	      $this->fields = mysqli_fetch_assoc($this->_queryID);	      break;	    default:	    }	  if (is_array($this->fields)) 	    return true;	  $this->EOF = true;	  return false;	}			function _fetch()	{	  // mysqli_fetch_array($this->_queryID, MYSQLI_NUM) does not	  // work (22-10-2003). But mysqli_fetch_array($this->_queryID) gives	  // int resulttype should default to MYSQLI_BOTH,but give MYSQLI_NUM.	  //	  $this->fields =  mysqli_fetch_fields($this->_queryID);	  //	  $this->fields =  mysqli_fetch_array($this->_queryID); //, $this->fetchMode);		  	  $this->fields =  mysqli_fetch_assoc($this->_queryID); // $this->fetchMode);	  return is_array($this->fields);	}		function _close() 	{	  mysqli_free_result($this->_queryID); 	  $this->_queryID = false;		}		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': 	    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':	    return !empty($fieldobj->binary) ? 'B' : 'X';	  case 'YEAR':	  case 'DATE': 	    return 'D';			  case 'TIME':	  case 'DATETIME':	  case 'TIMESTAMP': return 'T';			  case 'INT': 	  case 'INTEGER':	  case 'BIGINT':	  case 'TINYINT':	  case 'MEDIUMINT':	  case 'SMALLINT': 				    if (!empty($fieldobj->primary_key)) return 'R';	    else return 'I';	    // Added floating-point types	    // Maybe not necessery.	  case 'FLOAT':	  case 'DOUBLE':	    //		case 'DOUBLE PRECISION':	  case 'DECIMAL':	  case 'DEC':	  case 'FIXED':	  default: 	    return 'N';	  }	}	} }?>

⌨️ 快捷键说明

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