diff options
Diffstat (limited to 'framework/3rdParty/adodb/drivers/adodb-mysql.inc.php')
| -rw-r--r-- | framework/3rdParty/adodb/drivers/adodb-mysql.inc.php | 776 | 
1 files changed, 776 insertions, 0 deletions
diff --git a/framework/3rdParty/adodb/drivers/adodb-mysql.inc.php b/framework/3rdParty/adodb/drivers/adodb-mysql.inc.php new file mode 100644 index 00000000..c95e025a --- /dev/null +++ b/framework/3rdParty/adodb/drivers/adodb-mysql.inc.php @@ -0,0 +1,776 @@ +<?php +/* +V4.81 3 May 2006  (c) 2000-2006 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. +  Set tabs to 8. +   +  MySQL code that does not support transactions. Use mysqlt if you need transactions. +  Requires mysql client. Works on Windows and Unix. +   + 28 Feb 2001: MetaColumns bug fix - suggested by  Freek Dijkstra (phpeverywhere@macfreek.com) +*/  + +// security - hide paths +if (!defined('ADODB_DIR')) die(); + +if (! defined("_ADODB_MYSQL_LAYER")) { + define("_ADODB_MYSQL_LAYER", 1 ); + +class ADODB_mysql extends ADOConnection { +	var $databaseType = 'mysql'; +	var $dataProvider = 'mysql'; +	var $hasInsertID = true; +	var $hasAffectedRows = true;	 +	var $metaTablesSQL = "SHOW TABLES";	 +	var $metaColumnsSQL = "SHOW COLUMNS FROM %s"; +	var $fmtTimeStamp = "'Y-m-d H:i:s'"; +	var $hasLimit = true; +	var $hasMoveFirst = true; +	var $hasGenID = true; +	var $isoDates = true; // accepts dates in ISO format +	var $sysDate = 'CURDATE()'; +	var $sysTimeStamp = 'NOW()'; +	var $hasTransactions = false; +	var $forceNewConnect = false; +	var $poorAffectedRows = true; +	var $clientFlags = 0; +	var $substr = "substring"; +	var $nameQuote = '`';		/// string to use to quote identifiers and names +	var $compat323 = false; 		// true if compat with mysql 3.23 +	 +	function ADODB_mysql()  +	{			 +		if (defined('ADODB_EXTENSION')) $this->rsPrefix .= 'ext_'; +	} +	 +	function ServerInfo() +	{ +		$arr['description'] = ADOConnection::GetOne("select version()"); +		$arr['version'] = ADOConnection::_findvers($arr['description']); +		return $arr; +	} +	 +	function IfNull( $field, $ifNull )  +	{ +		return " IFNULL($field, $ifNull) "; // if MySQL +	} +	 +	 +	function &MetaTables($ttype=false,$showSchema=false,$mask=false)  +	{	 +		$save = $this->metaTablesSQL; +		if ($showSchema && is_string($showSchema)) { +			$this->metaTablesSQL .= " from $showSchema"; +		} +		 +		if ($mask) { +			$mask = $this->qstr($mask); +			$this->metaTablesSQL .= " like $mask"; +		} +		$ret =& ADOConnection::MetaTables($ttype,$showSchema); +		 +		$this->metaTablesSQL = $save; +		return $ret; +	} +	 +	 +	function &MetaIndexes ($table, $primary = FALSE, $owner=false) +	{ +        // save old fetch mode +        global $ADODB_FETCH_MODE; +         +		$false = false; +        $save = $ADODB_FETCH_MODE; +        $ADODB_FETCH_MODE = ADODB_FETCH_NUM; +        if ($this->fetchMode !== FALSE) { +               $savem = $this->SetFetchMode(FALSE); +        } +         +        // get index details +        $rs = $this->Execute(sprintf('SHOW INDEX FROM %s',$table)); +         +        // restore fetchmode +        if (isset($savem)) { +                $this->SetFetchMode($savem); +        } +        $ADODB_FETCH_MODE = $save; +         +        if (!is_object($rs)) { +                return $false; +        } +         +        $indexes = array (); +         +        // parse index data into array +        while ($row = $rs->FetchRow()) { +                if ($primary == FALSE AND $row[2] == 'PRIMARY') { +                        continue; +                } +                 +                if (!isset($indexes[$row[2]])) { +                        $indexes[$row[2]] = array( +                                'unique' => ($row[1] == 0), +                                'columns' => array() +                        ); +                } +                 +                $indexes[$row[2]]['columns'][$row[3] - 1] = $row[4]; +        } +         +        // sort columns by order in the index +        foreach ( array_keys ($indexes) as $index ) +        { +                ksort ($indexes[$index]['columns']); +        } +         +        return $indexes; +	} + +	 +	// if magic quotes disabled, use mysql_real_escape_string() +	function qstr($s,$magic_quotes=false) +	{ +		if (!$magic_quotes) { +		 +			if (ADODB_PHPVER >= 0x4300) { +				if (is_resource($this->_connectionID)) +					return "'".mysql_real_escape_string($s,$this->_connectionID)."'"; +			} +			if ($this->replaceQuote[0] == '\\'){ +				$s = adodb_str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s); +			} +			return  "'".str_replace("'",$this->replaceQuote,$s)."'";  +		} +		 +		// undo magic quotes for " +		$s = str_replace('\\"','"',$s); +		return "'$s'"; +	} +	 +	function _insertid() +	{ +		return ADOConnection::GetOne('SELECT LAST_INSERT_ID()'); +		//return mysql_insert_id($this->_connectionID); +	} +	 +	function GetOne($sql,$inputarr=false) +	{ +		if ($this->compat323 == false && strncasecmp($sql,'sele',4) == 0) { +			$rs =& $this->SelectLimit($sql,1,-1,$inputarr); +			if ($rs) { +				$rs->Close(); +				if ($rs->EOF) return false; +				return reset($rs->fields); +			} +		} else { +			return ADOConnection::GetOne($sql,$inputarr); +		} +		return false; +	} +	 +	function BeginTrans() +	{ +		if ($this->debug) ADOConnection::outp("Transactions not supported in 'mysql' driver. Use 'mysqlt' or 'mysqli' driver"); +	} +	 +	function _affectedrows() +	{ +			return mysql_affected_rows($this->_connectionID); +	} +   + 	// See http://www.mysql.com/doc/M/i/Miscellaneous_functions.html +	// Reference on Last_Insert_ID on the recommended way to simulate sequences + 	var $_genIDSQL = "update %s set id=LAST_INSERT_ID(id+1);"; +	var $_genSeqSQL = "create table %s (id int not null)"; +	var $_genSeq2SQL = "insert into %s values (%s)"; +	var $_dropSeqSQL = "drop table %s"; +	 +	function CreateSequence($seqname='adodbseq',$startID=1) +	{ +		if (empty($this->_genSeqSQL)) return false; +		$u = strtoupper($seqname); +		 +		$ok = $this->Execute(sprintf($this->_genSeqSQL,$seqname)); +		if (!$ok) return false; +		return $this->Execute(sprintf($this->_genSeq2SQL,$seqname,$startID-1)); +	} +	 + +	function GenID($seqname='adodbseq',$startID=1) +	{ +		// post-nuke sets hasGenID to false +		if (!$this->hasGenID) return false; +		 +		$savelog = $this->_logsql; +		$this->_logsql = false; +		$getnext = sprintf($this->_genIDSQL,$seqname); +		$holdtransOK = $this->_transOK; // save the current status +		$rs = @$this->Execute($getnext); +		if (!$rs) { +			if ($holdtransOK) $this->_transOK = true; //if the status was ok before reset +			$u = strtoupper($seqname); +			$this->Execute(sprintf($this->_genSeqSQL,$seqname)); +			$this->Execute(sprintf($this->_genSeq2SQL,$seqname,$startID-1)); +			$rs = $this->Execute($getnext); +		} +		$this->genID = mysql_insert_id($this->_connectionID); +		 +		if ($rs) $rs->Close(); +		 +		$this->_logsql = $savelog; +		return $this->genID; +	} +	 +  	function &MetaDatabases() +	{ +		$qid = mysql_list_dbs($this->_connectionID); +		$arr = array(); +		$i = 0; +		$max = mysql_num_rows($qid); +		while ($i < $max) { +			$db = mysql_tablename($qid,$i); +			if ($db != 'mysql') $arr[] = $db; +			$i += 1; +		} +		return $arr; +	} +	 +		 +	// Format date column in sql string given an input format that understands Y M D +	function SQLDate($fmt, $col=false) +	{	 +		if (!$col) $col = $this->sysTimeStamp; +		$s = 'DATE_FORMAT('.$col.",'"; +		$concat = false; +		$len = strlen($fmt); +		for ($i=0; $i < $len; $i++) { +			$ch = $fmt[$i]; +			switch($ch) { +				 +			default: +				if ($ch == '\\') { +					$i++; +					$ch = substr($fmt,$i,1); +				} +				/** FALL THROUGH */ +			case '-': +			case '/': +				$s .= $ch; +				break; +				 +			case 'Y': +			case 'y': +				$s .= '%Y'; +				break; +			case 'M': +				$s .= '%b'; +				break; +				 +			case 'm': +				$s .= '%m'; +				break; +			case 'D': +			case 'd': +				$s .= '%d'; +				break; +			 +			case 'Q': +			case 'q': +				$s .= "'),Quarter($col)"; +				 +				if ($len > $i+1) $s .= ",DATE_FORMAT($col,'"; +				else $s .= ",('"; +				$concat = true; +				break; +			 +			case 'H':  +				$s .= '%H'; +				break; +				 +			case 'h': +				$s .= '%I'; +				break; +				 +			case 'i': +				$s .= '%i'; +				break; +				 +			case 's': +				$s .= '%s'; +				break; +				 +			case 'a': +			case 'A': +				$s .= '%p'; +				break; +				 +			case 'w': +				$s .= '%w'; +				break; +				 +			 case 'W': +				$s .= '%U'; +				break; +				 +			case 'l': +				$s .= '%W'; +				break; +			} +		} +		$s.="')"; +		if ($concat) $s = "CONCAT($s)"; +		return $s; +	} +	 + +	// returns concatenated string +	// much easier to run "mysqld --ansi" or "mysqld --sql-mode=PIPES_AS_CONCAT" and use || operator +	function Concat() +	{ +		$s = ""; +		$arr = func_get_args(); +		 +		// suggestion by andrew005@mnogo.ru +		$s = implode(',',$arr);  +		if (strlen($s) > 0) return "CONCAT($s)"; +		else return ''; +	} +	 +	function OffsetDate($dayFraction,$date=false) +	{		 +		if (!$date) $date = $this->sysDate; +		$fraction = $dayFraction * 24 * 3600; +		return "from_unixtime(unix_timestamp($date)+$fraction)"; +	} +	 +	// returns true or false +	function _connect($argHostname, $argUsername, $argPassword, $argDatabasename) +	{ +		if (!empty($this->port)) $argHostname .= ":".$this->port; +		 +		if (ADODB_PHPVER >= 0x4300) +			$this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword, +												$this->forceNewConnect,$this->clientFlags); +		else if (ADODB_PHPVER >= 0x4200) +			$this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword, +												$this->forceNewConnect); +		else +			$this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword); +	 +		if ($this->_connectionID === false) return false; +		if ($argDatabasename) return $this->SelectDB($argDatabasename); +		return true;	 +	} +	 +	// returns true or false +	function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename) +	{ +		if (!empty($this->port)) $argHostname .= ":".$this->port; +		 +		if (ADODB_PHPVER >= 0x4300) +			$this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword,$this->clientFlags); +		else +			$this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword); +		if ($this->_connectionID === false) return false; +		if ($this->autoRollback) $this->RollbackTrans(); +		if ($argDatabasename) return $this->SelectDB($argDatabasename); +		return true;	 +	} +	 +	function _nconnect($argHostname, $argUsername, $argPassword, $argDatabasename) +	{ +		$this->forceNewConnect = true; +		return $this->_connect($argHostname, $argUsername, $argPassword, $argDatabasename); +	} +	 + 	function &MetaColumns($table)  +	{ +		$this->_findschema($table,$schema); +		if ($schema) { +			$dbName = $this->database; +			$this->SelectDB($schema); +		} +		global $ADODB_FETCH_MODE; +		$save = $ADODB_FETCH_MODE; +		$ADODB_FETCH_MODE = ADODB_FETCH_NUM; +		 +		if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); +		$rs = $this->Execute(sprintf($this->metaColumnsSQL,$table)); +		 +		if ($schema) { +			$this->SelectDB($dbName); +		} +		 +		if (isset($savem)) $this->SetFetchMode($savem); +		$ADODB_FETCH_MODE = $save; +		if (!is_object($rs)) { +			$false = false; +			return $false; +		} +			 +		$retarr = array(); +		while (!$rs->EOF){ +			$fld = new ADOFieldObject(); +			$fld->name = $rs->fields[0]; +			$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; +			} elseif (preg_match("/^(enum)\((.*)\)$/i", $type, $query_array)) { +				$fld->type = $query_array[1]; +				$arr = explode(",",$query_array[2]); +				$fld->enums = $arr; +				$zlen = max(array_map("strlen",$arr)) - 2; // PHP >= 4.0.6 +				$fld->max_length = ($zlen > 0) ? $zlen : 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->database = $dbName; +		$this->databaseName = $dbName; # obsolete, retained for compat with older adodb versions +		if ($this->_connectionID) { +			return @mysql_select_db($dbName,$this->_connectionID);		 +		} +		else return false;	 +	} +	 +	// parameters use PostgreSQL convention, not MySQL +	function &SelectLimit($sql,$nrows=-1,$offset=-1,$inputarr=false,$secs=0) +	{ +		$offsetStr =($offset>=0) ? ((integer)$offset)."," : ''; +		// jason judge, see http://phplens.com/lens/lensforum/msgs.php?id=9220 +		if ($nrows < 0) $nrows = '18446744073709551615';  +		 +		if ($secs) +			$rs =& $this->CacheExecute($secs,$sql." LIMIT $offsetStr".((integer)$nrows),$inputarr); +		else +			$rs =& $this->Execute($sql." LIMIT $offsetStr".((integer)$nrows),$inputarr); +		return $rs; +	} +	 +	// returns queryID or false +	function _query($sql,$inputarr) +	{ +	//global $ADODB_COUNTRECS; +		//if($ADODB_COUNTRECS)  +		return mysql_query($sql,$this->_connectionID); +		//else return @mysql_unbuffered_query($sql,$this->_connectionID); // requires PHP >= 4.0.6 +	} + +	/*	Returns: the last error message from previous database operation	*/	 +	function ErrorMsg()  +	{ +	 +		if ($this->_logsql) return $this->_errorMsg; +		if (empty($this->_connectionID)) $this->_errorMsg = @mysql_error(); +		else $this->_errorMsg = @mysql_error($this->_connectionID); +		return $this->_errorMsg; +	} +	 +	/*	Returns: the last error number from previous database operation	*/	 +	function ErrorNo()  +	{ +		if ($this->_logsql) return $this->_errorCode; +		if (empty($this->_connectionID))  return @mysql_errno(); +		else return @mysql_errno($this->_connectionID); +	} +	 +	// returns true or false +	function _close() +	{ +		@mysql_close($this->_connectionID); +		$this->_connectionID = false; +	} + +	 +	/* +	* Maximum size of C field +	*/ +	function CharMax() +	{ +		return 255;  +	} +	 +	/* +	* Maximum size of X field +	*/ +	function TextMax() +	{ +		return 4294967295;  +	} +	 +	// "Innox - Juan Carlos Gonzalez" <jgonzalez#innox.com.mx> +	function MetaForeignKeys( $table, $owner = FALSE, $upper = FALSE, $associative = FALSE ) +     { +         if ( !empty($owner) ) { +            $table = "$owner.$table"; +         } +         $a_create_table = $this->getRow(sprintf('SHOW CREATE TABLE %s', $table)); +		 if ($associative) $create_sql = $a_create_table["Create Table"]; +         else $create_sql  = $a_create_table[1]; + +         $matches = array(); + +         if (!preg_match_all("/FOREIGN KEY \(`(.*?)`\) REFERENCES `(.*?)` \(`(.*?)`\)/", $create_sql, $matches)) return false; +	     $foreign_keys = array();	 	  +         $num_keys = count($matches[0]); +         for ( $i = 0;  $i < $num_keys;  $i ++ ) { +             $my_field  = explode('`, `', $matches[1][$i]); +             $ref_table = $matches[2][$i]; +             $ref_field = explode('`, `', $matches[3][$i]); + +             if ( $upper ) { +                 $ref_table = strtoupper($ref_table); +             } + +             $foreign_keys[$ref_table] = array(); +             $num_fields = count($my_field); +             for ( $j = 0;  $j < $num_fields;  $j ++ ) { +                 if ( $associative ) { +                     $foreign_keys[$ref_table][$ref_field[$j]] = $my_field[$j]; +                 } else { +                     $foreign_keys[$ref_table][] = "{$my_field[$j]}={$ref_field[$j]}"; +                 } +             } +         } +          +         return  $foreign_keys; +     } +	  +	 +} +	 +/*-------------------------------------------------------------------------------------- +	 Class Name: Recordset +--------------------------------------------------------------------------------------*/ + + +class ADORecordSet_mysql extends ADORecordSet{	 +	 +	var $databaseType = "mysql"; +	var $canSeek = true; +	 +	function ADORecordSet_mysql($queryID,$mode=false)  +	{ +		if ($mode === false) {  +			global $ADODB_FETCH_MODE; +			$mode = $ADODB_FETCH_MODE; +		} +		switch ($mode) +		{ +		case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break; +		case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break; +		case ADODB_FETCH_DEFAULT: +		case ADODB_FETCH_BOTH: +		default: +			$this->fetchMode = MYSQL_BOTH; break; +		} +		$this->adodbFetchMode = $mode; +		$this->ADORecordSet($queryID);	 +	} +	 +	function _initrs() +	{ +	//GLOBAL $ADODB_COUNTRECS; +	//	$this->_numOfRows = ($ADODB_COUNTRECS) ? @mysql_num_rows($this->_queryID):-1; +		$this->_numOfRows = @mysql_num_rows($this->_queryID); +		$this->_numOfFields = @mysql_num_fields($this->_queryID); +	} +	 +	function &FetchField($fieldOffset = -1)  +	{	 +		if ($fieldOffset != -1) { +			$o = @mysql_fetch_field($this->_queryID, $fieldOffset); +			$f = @mysql_field_flags($this->_queryID,$fieldOffset); +			$o->max_length = @mysql_field_len($this->_queryID,$fieldOffset); // suggested by: Jim Nicholson (jnich@att.com) +			//$o->max_length = -1; // mysql returns the max length less spaces -- so it is unrealiable +			$o->binary = (strpos($f,'binary')!== false); +		} +		else if ($fieldOffset == -1) {	/*	The $fieldOffset argument is not provided thus its -1 	*/ +			$o = @mysql_fetch_field($this->_queryID); +		$o->max_length = @mysql_field_len($this->_queryID); // suggested by: Jim Nicholson (jnich@att.com) +		//$o->max_length = -1; // mysql returns the max length less spaces -- so it is unrealiable +		} +			 +		return $o; +	} + +	function &GetRowAssoc($upper=true) +	{ +		if ($this->fetchMode == MYSQL_ASSOC && !$upper) $row = $this->fields; +		else $row =& ADORecordSet::GetRowAssoc($upper); +		return $row; +	} +	 +	/* Use associative array to get fields array */ +	function Fields($colname) +	{	 +		// added @ by "Michael William Miller" <mille562@pilot.msu.edu> +		if ($this->fetchMode != MYSQL_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; +		return @mysql_data_seek($this->_queryID,$row); +	} +	 +	function MoveNext() +	{ +		//return adodb_movenext($this); +		//if (defined('ADODB_EXTENSION')) return adodb_movenext($this); +		if (@$this->fields = mysql_fetch_array($this->_queryID,$this->fetchMode)) { +			$this->_currentRow += 1; +			return true; +		} +		if (!$this->EOF) { +			$this->_currentRow += 1; +			$this->EOF = true; +		} +		return false; +	} +	 +	function _fetch() +	{ +		$this->fields =  @mysql_fetch_array($this->_queryID,$this->fetchMode); +		return is_array($this->fields); +	} +	 +	function _close() { +		@mysql_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'; +		 +		default: return 'N'; +		} +	} + +} + +class ADORecordSet_ext_mysql extends ADORecordSet_mysql {	 +	function ADORecordSet_ext_mysql($queryID,$mode=false)  +	{ +		if ($mode === false) {  +			global $ADODB_FETCH_MODE; +			$mode = $ADODB_FETCH_MODE; +		} +		switch ($mode) +		{ +		case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break; +		case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break; +		case ADODB_FETCH_DEFAULT: +		case ADODB_FETCH_BOTH: +		default: +		$this->fetchMode = MYSQL_BOTH; break; +		} +		$this->adodbFetchMode = $mode; +		$this->ADORecordSet($queryID); +	} +	 +	function MoveNext() +	{ +		return @adodb_movenext($this); +	} +} + + +} +?>
\ No newline at end of file  | 
