''); $dbtype = strtolower($dbtype); include_once ADODB_DIR . '/adodbSQL_drivers/' . $dbtype . '/' . $dbtype . '_driver.inc'; $last_module = $dbtype . '_' . 'driver'; if(!empty($modules)) { $module_list = explode(":", strtolower($modules)); $generic_modules = array(); foreach($module_list as $mod) { $mod = trim($mod); if(is_file(ADODB_DIR . '/generic_modules/' . $mod . '_module.inc')) { $generic_modules[] = $mod; } else { include_once ADODB_DIR . '/adodbSQL_drivers/' . $dbtype . '/' . $dbtype . '_' . $mod . '_module.inc'; $last_module = $dbtype . '_' . $mod; } } if(count($generic_modules)) { foreach($generic_modules as $mod) { include_once ADODB_DIR . '/generic_modules/' . $mod . '_module.inc'; $last_module = $mod; } } } $extention = $last_module . '_ADOConnection'; $object = new $extention(); $object->last_module_name = $last_module; $object->raiseErrorFn = (defined('ADODB_ERROR_HANDLER')) ? ADODB_ERROR_HANDLER : false; $object->query_count = 0; $object->query_time_total = 0; if(!empty($dsn_array['scheme'])) { if (isset($dsn_array['port'])) $object->port = $dsn_array['port']; $persistent = false; $forcenew = false; if (isset($dsn_array['query'])) { $option_array = explode('&', $dsn_array['query']); foreach($option_array as $element => $value) { $array = explode('=', $value); $data = isset($array[1]) ? $array[1] : 1; switch(strtolower($array[0])) { case 'persist': case 'persistent': $persistent = $data; break; case 'debug': $object->debug = (integer) $data; break; case 'fetchmode': $ADODB_FETCH_MODE = constant($data); break; case 'clientflags': $object->clientFlags = $data; break; case 'port': $object->port = $data; break; case 'socket': $object->socket = $data; break; case 'forcenew': $forcenew = $data; break; } } } $dsn_array['host'] = isset($dsn_array['host']) ? $dsn_array['host'] : ''; $dsn_array['user'] = isset($dsn_array['user']) ? $dsn_array['user'] : ''; $dsn_array['pass'] = isset($dsn_array['pass']) ? $dsn_array['pass'] : ''; $dsn_array['path'] = isset($dsn_array['path']) ? substr($dsn_array['path'], 1) : ''; $result = $object->_connect($dsn_array['host'], $dsn_array['user'], $dsn_array['pass'], $dsn_array['path'], $persistent, $forcenew); if (!$result) return $false; } return $object; } /** * Alternative Database connection * Usage: $db = new NewADOConnection('dbtype'); * * @access public * @param string $dbtype */ function &NewADOConnection($dbtype='', $module = '' ) { $tmp =& ADONewConnection($dbtype, $module); return $tmp; } function &NewDataDictionary(&$connection, $dbtype=false) { if(!$dbtype) $dbtype = $connection->dbtype; include_once ADODB_DIR . '/adodb-datadict.inc.php'; include_once ADODB_DIR . '/adodbSQL_drivers/' . $dbtype . '/' . $dbtype . '_datadict.inc'; $class = "ADODB2_$dbtype"; $dict = new $class(); $dict->connection = &$connection; $dict->upperName = strtoupper($dbtype); $dict->quote = $connection->nameQuote; $dict->debug_echo = $connection->debug_echo; return $dict; } /** * Backwards compatible with ADOdb usage of NewPerfMonitor * Change to module basis for PerfMon mean we need only return a reference to $connection object. * Usage: $perf =& NewPerfMonitor($conn); - $perf is a reference to $conn * * @access public * @param ADOConnection $connection * @param string $dbtype This is an optional parameter with no actual use in ADOdb-Lite; for BC only. */ function &NewPerfMonitor(&$connection, $dbtype=false) { return $connection; } class ADOConnection { var $connectionId = false; var $record_set = false; var $database; var $dbtype; var $dataProvider; var $host; var $open; var $password; var $username; var $persistent; var $debug = false; var $debug_console = false; var $debug_echo = true; var $debug_output; var $forcenewconnection = false; var $createdatabase = false; var $last_module_name; var $socket = false; var $port = false; var $clientFlags = 0; var $nameQuote = '"'; var $sysDate = false; /// name of function that returns the current date var $sysTimeStamp = false; /// name of function that returns the current timestamp var $sql; var $raiseErrorFn = false; var $query_count = 0; var $query_time_total = 0; var $query_list = array(); var $query_list_time = array(); var $query_list_errors = array(); var $_logsql = false; function ADOConnection() { } /** * Returns floating point version number of ADOdb Lite * Usage: $db->Version(); * * @access public */ function Version() { global $ADODB_vers; return (float) substr($ADODB_vers,1); } /** * Returns true if connected to database * Usage: $db->IsConnected(); * * @access public */ function IsConnected() { if($this->connectionId === false || $this->connectionId == false) return false; else return true; } /** * Normal Database connection * Usage: $result = $db->Connect('host', 'username', 'password', 'database'); * * @access public * @param string $database * @param string $host * @param string $password * @param string $username * @param string $forcenew // private */ function Connect( $host = "", $username = "", $password = "", $database = "", $forcenew = false) { return $this->_connect($host, $username, $password, $database, false, $forcenew); } /** * Persistent Database connection * Usage: $result = $db->PConnect('host', 'username', 'password', 'database'); * * @access public * @param string $database * @param string $host * @param string $password * @param string $username */ function PConnect( $host = "", $username = "", $password = "", $database = "") { return $this->_connect($host, $username, $password, $database, true, false); } /** * Force New Database connection * Usage: $result = $db->NConnect('host', 'username', 'password', 'database'); * * @access public * @param string $database * @param string $host * @param string $password * @param string $username */ function NConnect( $host = "", $username = "", $password = "", $database = "") { return $this->_connect($host, $username, $password, $database, false, true); } /** * Returns SQL query and instantiates sql statement & resultset driver * Usage: $linkId =& $db->execute( 'SELECT * FROM foo ORDER BY id' ); * * @access public * @param string $sql * @return mixed Resource ID, Array */ function &Execute( $sql, $inputarr = false ) { // adodb_log_sql will time the query execution and log the sql query // note: the later $this->do_query() should not run since adodb_log_sql() independently executes the query itself. if($this->_logsql === true) { $ret =& adodb_log_sql($this, $sql, $inputarr); if (isset($ret)) return $ret; } $rs =& $this->do_query($sql, -1, -1, $inputarr); return $rs; } /** * Returns SQL query and instantiates sql statement & resultset driver * Usage: $linkId =& $db->SelectLimit( 'SELECT * FROM foo ORDER BY id', $nrows, $offset ); * $nrows and $offset are optional * * @access public * @param string $sql * @param string $nrows * @param string $offset * @return mixed Resource ID, Array */ function &SelectLimit( $sql, $nrows=-1, $offset=-1, $inputarr=false, $secs2cache=0 ) { $rs =& $this->do_query( $sql, $offset, $nrows, $inputarr); return $rs; } /** * Display debug output and database error. * * @access private */ function outp($text, $newline = true) { global $ADODB_OUTP; $this->debug_output = "(" . $this->dbtype . "): ".htmlspecialchars($text)."\n"; if( $this->ErrorNo() != 0 ) $this->debug_output .= "Error (" . $this->ErrorNo() .'): '. $this->ErrorMsg() . "\n"; if(defined('ADODB_OUTP')) { $fn = ADODB_OUTP; } else if(isset($ADODB_OUTP)) { $fn = $ADODB_OUTP; } if(defined('ADODB_OUTP') || isset($ADODB_OUTP)) { $fn($this->debug_output, $newline); return; } if($this->debug_echo) echo $this->debug_output; } } /** * Empty result record set for updates, inserts, ect * * @access private */ class ADORecordSet_empty { var $fields = false; var $EOF = true; function MoveNext() {return;} function RecordCount() {return 0;} function FieldCount() {return 0;} function EOF(){return TRUE;} function Close(){return true;} } class ADOFieldObject { var $name = ''; var $max_length=0; var $type=""; } ?>