diff --git a/include/mysql.php b/include/mysql.php index 3a86c7a8c5e5b04e3e0533596109018b992640e1..27e3cc3769a97866e6a74e0744c9640f39943ad6 100644 --- a/include/mysql.php +++ b/include/mysql.php @@ -2,7 +2,7 @@ /********************************************************************* mysql.php - Collection of MySQL helper interface functions. + Collection of MySQL helper interface functions. Mostly wrappers with error/resource checking. @@ -16,8 +16,8 @@ vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ - function db_connect($host, $user, $passwd, $db = "") { - + function db_connect($host, $user, $passwd, $options = NULL) { + //Assert if(!strlen($user) || !strlen($passwd) || !strlen($host)) return NULL; @@ -27,7 +27,7 @@ return NULL; //Select the database, if any. - if($db) db_select_database($db); + if($options['db']) db_select_database($options['db']); //set desired encoding just in case mysql charset is not UTF-8 - Thanks to FreshMedia @mysql_query('SET NAMES "utf8"'); @@ -36,7 +36,7 @@ @db_set_variable('sql_mode', ''); - return $dblink; + return $dblink; } function db_close() { @@ -47,7 +47,7 @@ function db_version() { $version=0; - if(preg_match('/(\d{1,2}\.\d{1,2}\.\d{1,2})/', + if(preg_match('/(\d{1,2}\.\d{1,2}\.\d{1,2})/', mysql_result(db_query('SELECT VERSION()'),0,0), $matches)) # nolint $version=$matches[1]; # nolint @@ -77,17 +77,17 @@ function db_create_database($database, $charset='utf8', $collate='utf8_general_ci') { return @mysql_query(sprintf('CREATE DATABASE %s DEFAULT CHARACTER SET %s COLLATE %s', $database, $charset, $collate)); } - + // execute sql query function db_query($query, $database="", $conn="") { global $ost; - + if($conn) { /* connection is provided*/ $res = ($database)?mysql_db_query($database, $query, $conn):mysql_query($query, $conn); } else { $res = ($database)?mysql_db_query($database, $query):mysql_query($query); } - + if(!$res && $ost) { //error reporting $msg='['.$query.']'."\n\n".db_error(); $ost->logDBError('DB Error #'.db_errno(), $msg); @@ -98,7 +98,7 @@ } function db_squery($query) { //smart db query...utilizing args and sprintf - + $args = func_get_args(); $query = array_shift($args); $query = str_replace("?", "%s", $query); @@ -108,7 +108,7 @@ return db_query($query); } - function db_count($query) { + function db_count($query) { return db_result(db_query($query)); } @@ -126,7 +126,7 @@ function db_fetch_field($res) { return ($res)?mysql_fetch_field($res):NULL; - } + } function db_assoc_array($res, $mode=false) { if($res && db_num_rows($res)) { @@ -159,13 +159,13 @@ function db_free_result($res) { return mysql_free_result($res); } - + function db_output($var) { if(!function_exists('get_magic_quotes_runtime') || !get_magic_quotes_runtime()) //Sucker is NOT on - thanks. return $var; - if (is_array($var)) + if (is_array($var)) return array_map('db_output', $var); return (!is_numeric($var))?stripslashes($var):$var; @@ -192,9 +192,13 @@ } function db_error() { - return mysql_error(); + return mysql_error(); } - + + function db_connect_error() { + return db_error(); + } + function db_errno() { return mysql_errno(); } diff --git a/main.inc.php b/main.inc.php index 819ae4345e3f8d4c6a92f21ff3a229acc507ca0a..8fb1697f9b6b2eaa2d779521d15b2494b07a36d1 100644 --- a/main.inc.php +++ b/main.inc.php @@ -201,9 +201,10 @@ 'key' => DBSSLKEY ); - if (!db_connect(DBHOST, DBUSER, DBPASS, $options) - || !db_select_database(DBNAME)) { - $ferror='Unable to connect to the database'; + if (!db_connect(DBHOST, DBUSER, DBPASS, $options)) { + $ferror='Unable to connect to the database -'.db_connect_error(); + }elseif(!db_select_database(DBNAME)) { + $ferror='Unknown or invalid database '.DBNAME; } elseif(!($ost=osTicket::start(1)) || !($cfg = $ost->getConfig())) { $ferror='Unable to load config info from DB. Get tech support.'; } diff --git a/setup/inc/class.installer.php b/setup/inc/class.installer.php index 043f68d8abc9ea8c84c2d0255ce780c0a4389a7f..c19dd5501918f6519a2bfe1994a22865650c9568 100644 --- a/setup/inc/class.installer.php +++ b/setup/inc/class.installer.php @@ -81,7 +81,7 @@ class Installer extends SetupWizard { //MYSQL: Connect to the DB and check the version & database (create database if it doesn't exist!) if(!$this->errors) { if(!db_connect($vars['dbhost'],$vars['dbuser'],$vars['dbpass'])) - $this->errors['db']='Unable to connect to MySQL server. Possibly invalid login info.'; + $this->errors['db']='Unable to connect to MySQL server. '.db_connect_error(); elseif(db_version()< $this->getMySQLVersion()) $this->errors['db']=sprintf('osTicket requires MySQL %s or better!',$this->getMySQLVersion()); elseif(!db_select_database($vars['dbname']) && !db_create_database($vars['dbname'])) {