All pastes #565183 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-06-13 22:16 UTC
rendered paste body

class MGDb 
{
	private $connect_id;
    private $query_id = "";
	private $query_row = array();
	private $database = "";
	private $queries = 0;

    function __construct($dbserver, $dbuser, $dbpassword, $db, $db_persistency = true, $debug = true)
	{
	    $this->database = $db;
		$this->connect_id = ( $db_persistency ) ? @mysql_pconnect($dbserver, $dbuser, $dbpassword) : @mysql_connect($dbserver, $dbuser, $dbpassword);
	
	    $this->debug = $debug;
		
	    if ( !(@mysql_select_db($db, $this->connect_id)) )
		{
		    if( $this->connect_id )
			{
				mysql_close($this->connect_id);
			}
			
			$this->sql_error("Imposible conectar a Database: " . $this->database);
		}
    }
	
	public function set_query($query = "", $line = "", $file = "")
	{
		unset($this->query_id);
		
		if( !($this->query_id = @mysql_query($query, $this->connect_id)) )
		{
		   $msg_exts = "Consulta: " . $query . "<br />SQL error: " . mysql_error($this->connect_id) . "<br />SQL error code: " . mysql_errno($this->connect_id) . "<br />Archivo: " . $file . "<br />Linea:" . $line ;     
		   $this->sql_error("<b style=\"color:red\">Error en consulta</b>", $msg_exts);
		} 
		
		$this->queries++;
		
		return $this->query_id;
	}
	
	public function fetchrow($query_id = "")
	{
	    if($query_id == "")
		{
		   $query_id = $this->query_id;
		}
		
		$this->query_row = mysql_fetch_array($query_id, MYSQL_ASSOC);
		
		return ( $query_id ) ? $this->query_row : false;
	}
	
	public function fetchobject($query_id = "")
	{
	    if($query_id == "")
		{
		   $query_id = $this->query_id;
		}
		
		$this->query_row = mysql_fetch_object($query_id);
		
		return ( $query_id ) ? $this->query_row : false;
	}
		
	// Borrowed from phpBB
	public function fetchrowset($query_id = "")
	{
		if($query_id == "")
		{
			$query_id = $this->query_id;
		}
		
		if($query_id)
		{
			unset($rowset[$query_id]);
			unset($row[$query_id]);
			while($rowset[$query_id] = @mysql_fetch_array($query_id))
			{
				$result[] = $rowset[$query_id];
			}
			return $result;
		}
		else
		{
			return false;
		}
	}
	
    public function num_queries() {
        return $this->queries;
    }
	
	public function get_database() {
	    return $this->database;
	}

	public function count_rows($row, $table, $where) {
	   $result = $this->set_query("SELECT COUNT(" . $row . ") AS total FROM " . $table . "  " . $where );
	   $row = $this->fetchrow($result);
	   
	   return $row['total'];
	}
	
	public function get_version() {
	     return mysql_get_server_info();
	}
	
	// Functions MySQL
    public function num_rows($query_id = "")
	{
		if( query_id == "" )
		{
			$query_id = $this->query_id;
		}

		return ( $query_id ) ? mysql_num_rows($query_id) : false;	
	}
	
	public function free_result($query_id = "")
	{
	   	if ($query_id == "") 
		{
    		$query_id = $this->query_id;
    	}
    	
		unset($this->query_row);
		
    	return ( !(@mysql_free_result($query_id)) ) ? false: true;
	}
	
	public function affected_rows()
	{
		return ( $this->connect_id ) ? mysql_affected_rows($this->connect_id) : false;
	}
	
	public function close()
	{
		if( $this->query_id )
		{
			@mysql_free_result($this->query_id);
		}
	    return ( $this->connect_id ) ? mysql_close($this->connect_id) : false;
	}
	
	public function num_fields($query_id = "")
	{
		if( $query_id == "" )
		{
			$query_id = $this->query_id;
		}

		return ( $query_id ) ? mysql_num_fields($query_id) : false;
	}
	
	public function field_name($offset, $query_id = "")
	{
		if( $query_id == "")
		{
			$query_id = $this->query_id;
		}

		return ( $query_id ) ? mysql_field_name($query_id, $offset) : false;
	}
	
	public function field_type($offset, $query_id = "")
	{
		if( $query_id == "")
		{
			$query_id = $this->query_id;
		}

		return ( $query_id ) ? mysql_field_type($query_id, $offset) : false;
	}
	
	public function data_seek($num, $query_id = "")
	{
		if( $query_id == "" )
		{
			$query_id = $this->query_id;
		}

		return ( $query_id ) ? mysql_data_seek($query_id, $num) : false;
	}

	public function insert_id()
	{
		return ( $this->connect_id ) ? mysql_insert_id($this->connect_id) : false;
	}
	
	public function list_tables($database = "") 
	{
		if( $database == "" )
		{
			$database = $this->database;
		}
		
		return ( $database ) ? mysql_list_tables($this->database) : false;
	}
	
	public function list_fields($table, $database = "") 
	{
		if( $database == "" )
		{
			$database = $this->database;
		}
		
		$result = $GLOBALS['db']->set_query("SHOW COLUMNS FROM " . $table, __LINE__, __FILE__);

		return $result;
	}
		
	public function tablename($tables = "", $pointer = 0)
	{
	    if( $tables == "" )
		{
		   $tables = $this->list_tables();
		}
		
	    return mysql_tablename($tables, $pointer);
	}
	
	private function sql_error($msg, $exp = "")
	{
	   $msg_die = ( $this->debug ) ? $msg . "<br />" . $exp : $msg;
	   if( defined('MG_DIR') ) {
	     info(ERROR, $msg_die);
	   }
	   else {
	      die($msg_die);
	   }
	}
	
	public function set_query_return($query = "")
	{
		unset($this->query_id);
		
		if( !($this->query_id = @mysql_query($query, $this->connect_id)) )
		{
		   return $sql_error = array( 'query' => $query,
		                              'error' => mysql_error($this->connect_id) );
		} 
				
		return $this->query_id;
	}	
}   

?>