Query($sql); if (!$r && $die === true) { if (defined("IS_INSTALLER")){ return array(); }else{ if ($session['user']['superuser'] & SU_DEVELOPER || 1){ require_once("lib/show_backtrace.php"); die( "
".HTMLEntities($sql, ENT_COMPAT, getsetting("charset", "ISO-8859-1"))."" .db_error(LINK) .show_backtrace() ); }else{ die("A most bogus error has occurred. I apologise, but the page you were trying to access is broken. Please use your browser's back button and try again."); } } } $endtime = getmicrotime(); if ($endtime - $starttime >= 1.00 && ($session['user']['superuser'] & SU_DEBUG_OUTPUT)){ $s = trim($sql); if (strlen($s) > 800) $s = substr($s,0,400)." ... ".substr($s,strlen($s)-400); debug("Slow Query (".round($endtime-$starttime,2)."s): ".(HTMLEntities($s, ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`n"); } unset($dbinfo['affected_rows']); $dbinfo['affected_rows']=db_affected_rows(); $dbinfo['querytime'] += $endtime-$starttime; return $r; } //& at the start returns a reference to the data array. //since it's possible this array is large, we'll save ourselves //the overhead of duplicating the array, then destroying the old //one by returning a reference instead. function &db_query_cached($sql,$name,$duration=900){ //this function takes advantage of the data caching library to make //all of the other db_functions act just like MySQL queries but rely //instead on disk cached data. //if (getsetting("usedatacache", 0) == 1) debug("DataCache: $name"); //standard is 15 minutes, als hooks don't need to be cached *that* often, normally you invalidate the cache properly global $dbinfo; $data = datacache($name,$duration); if (is_array($data)){ reset($data); $dbinfo['affected_rows']=-1; return $data; }else{ $result = db_query($sql); $data = array(); while ($row = db_fetch_assoc($result)) { $data[] = $row; } updatedatacache($name,$data); reset($data); return $data; } } if (file_exists("lib/dbremote.php")) { require_once("lib/dbremote.php"); } function db_error(){ global $mysqli_resource; $r = $mysqli_resource->error; if ($r=="" && defined("DB_NODB") && !defined("DB_INSTALLER_STAGE4")) return "The database connection was never established"; return $r; } function db_fetch_assoc(&$result){ if (is_array($result)){ //cached data if (list($key,$val)=each($result)) return $val; else return false; }else{ //$fname = DBTYPE."_fetch_assoc"; //$r = $fname($result); $r = $result->Fetch_Assoc(); return $r; } } function db_insert_id(){ global $mysqli_resource; if (defined("DB_NODB") && !defined("LINK")) return -1; //$fname = DBTYPE."_insert_id"; //$r = $fname(); $r = $mysqli_resource->insert_id; return $r; } function db_num_rows($result){ if (is_array($result)){ return count($result); }else{ if (defined("DB_NODB") && !defined("LINK")) return 0; $r = $result->num_rows; return $r; } } function db_affected_rows($link=false){ global $dbinfo, $mysqli_resource; if (isset($dbinfo['affected_rows'])) { return $dbinfo['affected_rows']; } if (defined("DB_NODB") && !defined("LINK")) return 0; $r = $mysqli_resource->affected_rows; return $r; } function db_pconnect($host,$user,$pass){ global $mysqli_resource; // Constants cannot be an object // MySQLi do not know a pconnect $mysqli_resource = New MySQLi($host, $user, $pass); if($mysqli_resource) { return true; } else { return false; } } function db_connect($host,$user,$pass){ global $mysqli_resource; // Constants cannot be an object $mysqli_resource = New MySQLi($host, $user, $pass); if($mysqli_resource) { return true; } else { return false; } } function db_get_server_version() { global $mysqli_resource; return $mysqli_resource->server_info; } function db_select_db($dbname){ global $mysqli_resource; $r = $mysqli_resource->select_db($dbname); return $r; } function db_free_result($result){ if (is_array($result)){ //cached data unset($result); }else{ if (defined("DB_NODB") && !defined("LINK")) return false; $result->Free(); return true; } } function db_table_exists($tablename){ global $mysqli_resource; if (defined("DB_NODB") && !defined("LINK")) return false; $exists = $mysqli_resource->Query("SELECT 1 FROM `$tablename` LIMIT 0"); if ($exists) return true; return false; } function db_prefix($tablename, $force=false) { global $DB_PREFIX; if ($force === false) { $special_prefixes = array(); // The following file should be used to override or modify the // special_prefixes array to be correct for your site. Do NOT // do this unles you know EXACTLY what this means to you, your // game, your county, your state, your nation, your planet and // your universe! if (file_exists("prefixes.php")) require_once("prefixes.php"); $prefix = $DB_PREFIX; if (isset($special_prefixes[$tablename])) { $prefix = $special_prefixes[$tablename]; } } else { $prefix = $force; } return $prefix . $tablename; } ?>