215 lines
5.6 KiB
PHP
215 lines
5.6 KiB
PHP
<?php
|
|
if(!defined('DATALIFEENGINE')){die("Hacking attempt!");}
|
|
|
|
class db{
|
|
var $db_id = false;
|
|
var $query_num = 0;
|
|
var $mysql_error = '';
|
|
var $mysql_version = '';
|
|
var $mysql_error_num = 0;
|
|
var $MySQL_time_taken = 0;
|
|
var $query_id = false;
|
|
var $mysqli = false;
|
|
var $show_error = true;
|
|
|
|
function __construct(){
|
|
if ( extension_loaded('mysqli') ) $this->mysqli = true;
|
|
}
|
|
|
|
function connect($db_user, $db_pass, $db_name, $db_location = 'localhost'){
|
|
if ($this->mysqli) $this->db_id = @mysqli_connect ($db_location, $db_user, $db_pass, $db_name);
|
|
else $this->db_id = @mysql_connect ($db_location, $db_user, $db_pass);
|
|
|
|
if (!$this->mysqli and !@mysql_select_db ($db_name, $this->db_id)) {
|
|
$this->display_error (mysql_error (), mysql_errno ());
|
|
}
|
|
|
|
if(!$this->db_id) {
|
|
if ($this->mysqli) $this->display_error (mysqli_connect_error (), 1);
|
|
else $this->display_error (mysql_error (), mysql_errno ());
|
|
}
|
|
|
|
if ($this->mysqli) $this->mysql_version = mysqli_get_server_info ($this->db_id);
|
|
else $this->mysql_version = mysql_get_server_info ();
|
|
|
|
if(!defined('COLLATE')){define ("COLLATE", "cp1251");}
|
|
|
|
if($this->mysqli) mysqli_query($this->db_id, "SET NAMES '" . COLLATE . "'");
|
|
elseif (version_compare ($this->mysql_version, '4.1', '>=')) mysql_query("/*!40101 SET NAMES '" . COLLATE . "' */");
|
|
|
|
return true;
|
|
}
|
|
|
|
function query($query)
|
|
{
|
|
$time_before = $this->get_real_time();
|
|
|
|
if(!$this->db_id) $this->connect(DBUSER, DBPASS, DBNAME, DBHOST);
|
|
|
|
if($this->mysqli) $this->query_id = mysqli_query ($this->db_id, $query);
|
|
else $this->query_id = mysql_query ($query, $this->db_id);
|
|
|
|
$this->query_num++;
|
|
|
|
if (!$this->query_id) {
|
|
$this->mysql_error = mysqli_error ($this->db_id);
|
|
$this->mysql_error_num = mysqli_errno ($this->db_id);
|
|
$this->display_error ($this->mysql_error, $this->mysql_error_num, $query);
|
|
}
|
|
|
|
$this->MySQL_time_taken += $this->get_real_time() - $time_before;
|
|
|
|
return $this->query_id;
|
|
}
|
|
|
|
function get_row($query_id = false)
|
|
{
|
|
if (!$query_id) $query_id = $this->query_id;
|
|
|
|
if ($this->mysqli) $output = mysqli_fetch_assoc ($query_id);
|
|
else $output = mysql_fetch_assoc ($query_id);
|
|
|
|
return $output;
|
|
}
|
|
|
|
function get_affected_rows()
|
|
{
|
|
if($this->mysqli) return mysqli_affected_rows($this->db_id);
|
|
else return mysql_affected_rows($this->db_id);
|
|
}
|
|
|
|
function get_array($query_id = false)
|
|
{
|
|
if (!$query_id) $query_id = $this->query_id;
|
|
|
|
if($this->mysqli) return mysqli_fetch_array($query_id);
|
|
else return mysql_fetch_array($query_id);
|
|
}
|
|
|
|
function super_query($query, $multi = false)
|
|
{
|
|
if(!$multi) {
|
|
$this->query($query);
|
|
$data = $this->get_row();
|
|
$this->free();
|
|
return $data;
|
|
} else {
|
|
$this->query($query);
|
|
$rows = array();
|
|
while($row = $this->get_row()) {$rows[] = $row;}
|
|
$this->free();
|
|
return $rows;
|
|
}}
|
|
|
|
function num_rows($query_id = false)
|
|
{
|
|
if (!$query_id) $query_id = $this->query_id;
|
|
|
|
if($this->mysqli) return mysqli_num_rows($query_id);
|
|
else return mysql_num_rows($query_id);
|
|
}
|
|
|
|
function insert_id()
|
|
{
|
|
if($this->mysqli) return mysqli_insert_id($this->db_id);
|
|
else return mysql_insert_id($this->db_id);
|
|
}
|
|
|
|
function get_result_fields($query_id = false) {
|
|
|
|
if (!$query_id) $query_id = $this->query_id;
|
|
|
|
if ($this->mysqli) {
|
|
while ($field = mysqli_fetch_field ($query_id))
|
|
$fields[] = $field;
|
|
} else {
|
|
while ($field = mysql_fetch_field ($query_id))
|
|
$fields[] = $field;
|
|
}
|
|
|
|
return $fields;
|
|
}
|
|
|
|
function safesql( $source )
|
|
{
|
|
if(!$this->db_id) $this->connect(DBUSER, DBPASS, DBNAME, DBHOST);
|
|
|
|
if ($this->mysqli and $this->db_id) $source = mysqli_real_escape_string ($this->db_id, $source);
|
|
elseif (!$this->mysqli and $this->db_id) $source = mysql_real_escape_string ($source, $this->db_id);
|
|
else $source = addslashes($source);
|
|
|
|
return $source;
|
|
}
|
|
|
|
function free( $query_id = false )
|
|
{
|
|
if (!$query_id) $query_id = $this->query_id;
|
|
|
|
if($this->mysqli)@mysqli_free_result($query_id);
|
|
else @mysql_free_result($query_id);
|
|
}
|
|
|
|
function close()
|
|
{
|
|
if ($this->mysqli) @mysqli_close ($this->db_id);
|
|
else @mysql_close ($this->db_id);
|
|
}
|
|
|
|
function get_real_time()
|
|
{
|
|
list($seconds, $microSeconds) = explode(' ', microtime());
|
|
return ((float)$seconds + (float)$microSeconds);
|
|
}
|
|
|
|
function display_error($error, $error_num, $query = false){
|
|
if($this->show_error){
|
|
if(!$query) {
|
|
// Safify query
|
|
$query = preg_replace("/([0-9a-f]){32}/", "********************************", $query); // Hides all hashes
|
|
$query_str = "$query";
|
|
}
|
|
|
|
echo '<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>MySQL Fatal Error</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
|
|
<style type="text/css">
|
|
<!--
|
|
body {
|
|
font-family: Verdana, Arial, Helvetica, sans-serif;
|
|
font-size: 10px;
|
|
font-style: normal;
|
|
color: #000000;
|
|
}
|
|
-->
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<font size="4">MySQL Error!</font>
|
|
<br />------------------------<br />
|
|
<br />
|
|
|
|
<u>The Error returned was:</u>
|
|
<br />
|
|
<strong>'.$error.'</strong>
|
|
|
|
<br /><br />
|
|
</strong><u>Error Number:</u>
|
|
<br />
|
|
<strong>'.$error_num.'</strong>
|
|
<br />
|
|
<br />
|
|
|
|
<textarea name="" rows="10" cols="52" wrap="virtual">'.$query_str.'</textarea><br />
|
|
|
|
</body>
|
|
</html>';
|
|
|
|
exit();
|
|
} else return false;
|
|
}
|
|
|
|
}
|
|
?>
|