/** * Sends the sql to the database and returns the results. * * @internal Switches between ADOConnection::Execute() and * ADOConnection::SelectLimit() depending on the $query parameter's * $solutionModifier "limit" and "offset" settings. * Uses $query variable. * * @param array $arSql Array that gets a SQL query string once imploded * * @return mixed Anything ADOConnection::Execute() may return * @throws Exception If Database query does not work */ function queryDb($arSql, $nOffset, $nLimit) { $strSql = SparqlEngineDb_SqlMerger::getSelect($this->query, $arSql); if ($strSql == '()') { return new ADORecordSet(false); } // I want associative arrays. $oldmode = $this->dbConn->SetFetchMode(ADODB_FETCH_ASSOC); if (isset($GLOBALS['debugSparql']) && $GLOBALS['debugSparql']) { echo 'SQL query: ' . $strSql . "\n"; } if ($nLimit === null && $nOffset == 0) { $ret = $this->dbConn->execute($strSql); } else { if ($nLimit === null) { $ret = $this->dbConn->SelectLimit($strSql, -1, $nOffset); } else { $ret = $this->dbConn->SelectLimit($strSql, $nLimit, $nOffset); } } //... but others maybe not $this->dbConn->SetFetchMode($oldmode); if (!$ret) { //Error occured throw new Exception('ADOdb error: ' . $this->dbConn->ErrorMsg() . "\n" . $strSql); } return $ret; }
function ErrorMsg() { if ($this->_haserrorfunctions) { if (empty($this->_connectionID)) { return @odbc_errormsg(); } return @odbc_errormsg($this->_connectionID); } else { return ADOConnection::ErrorMsg(); } }
function ErrorMsg() { if ($this->_haserrorfunctions) { if ($this->_errorMsg !== false) { return $this->_errorMsg; } if (empty($this->_connectionID)) { return @db2_conn_errormsg(); } return @db2_conn_errormsg($this->_connectionID); } else { return ADOConnection::ErrorMsg(); } }
function ErrorMsg() { if ($this->_haserrorfunctions) { if ($this->_errorMsg !== false) return $this->_errorMsg; if (empty($this->_connectionID)) return @odbc_errormsg(); return @odbc_errormsg($this->_connectionID); } else return ADOConnection::ErrorMsg(); }
/** * Create DB connection */ protected function connect() { /** @var $this->connection \ADOConnection */ $this->connection =& NewADOConnection($this->driver); $host = $this->host; if ($this->port) { $host .= ':' . $this->port; } // connect if ($this->db) { $this->connection->Connect($host, $this->user, $this->password, $this->db); } else { $this->connection->Connect($host, $this->user, $this->password); } // check connection if (!$this->connection->IsConnected()) { $errMsg = $this->connection->ErrorMsg(); $this->utilityFuncs->throwException('db_connection_failed', $errMsg); } // execute initial statement if ($this->setDBinit) { $this->utilityFuncs->debugMessage('sql_request', [$this->setDBinit]); $this->connection->Execute($this->setDBinit); // error occured? if ($this->connection->ErrorNo() != 0) { $errMsg = $this->connection->ErrorMsg(); $this->utilityFuncs->debugMessage('sql_request_error', [$errMsg], 3); } } }
function checkError($result, $sql) { if ($result === false) { throw new DatabaseBackupException(DatabaseBackupErrorCode::$SQL_EXECUTION_ERROR, DatabaseBackup::$langString['SqlExecutionError'] . "\n<br>\n" . $sql . "\n<br>\n" . $this->connection->ErrorNo() . "\n<br>\n" . $this->connection->ErrorMsg()); } }
/** * Set the Oracle password for a user, if they have an Oracle account. Since we cannot * use variable binding, validate the username and password before we pass them to * the script * * @param $database \b ADOConnection an adodb connection * @param $username \b string username * @param $password \b string the new password */ public static function setOraclePassword(ADOConnection $database, $username, $password) { $username = strtoupper($username); // do not proceed if user does not have an account in this database if (!$database->GetOne("SELECT 1 FROM dba_users WHERE username = :u", array('u' => $username))) { return false; } if (!self::validateOraclePassword($password)) { throw new Exception('Invalid password'); } if (!self::validateOracleUsername($username)) { throw new Exception('Invalid username'); } $password = str_replace('"', '\\"', $password); $database->Execute("ALTER USER {$username} IDENTIFIED BY \"{$password}\""); if ($database->ErrorNo() > 0) { throw new Exception("Database error:" . $database->ErrorMsg()); } return true; }