Location: PHPKode > projects > MUSPA > muspa/include/db.php
<?php
/*******************************************************************************
* MUSPA
*
* Copyright (C) 2004 MUSPA Project
*
* Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
* sob os termos da Licença Pública Geral GNU conforme publicada pela Free
* Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
* qualquer versão posterior.
*
* Este programa é distribuído na expectativa de que seja útil, porém, SEM
* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU
* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do
* GNU para mais detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto com
* este programa; se não, escreva para a Free Software Foundation, Inc., no
* endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
*
*******************************************************************************/

class db
{
	/**
	*	Atributos
	*/
	var $host;				// str Host para conexao
	var $user;				// str Usuario para conexao
	var $pwd;				// str Senha para conexao
	var $db;				// str Nome da Base padrao
	var $link;				// res Handle da conexao
	var $sql;				// str Consultal SQL
	var $result;			// res Handle do resultado das querys
	var $numqueries;		// Número de queries executadas

	var $magicquotes;		// magic_quotes_gpc is on?

	/**
	*	Constructor
	*	@param	$host	End. do host
	*	@param	$user	Usuário
	*	@param	$pwd	Senha
	*	@param	$db		Banco de dados
	*/
	function db($host, $user, $pwd , $db)
	{
		$this->numqueries = 0;
		$this->magicquotes = (bool)get_magic_quotes_gpc();
		$this->host	= $host;
		$this->user	= $user;
		$this->pwd	= $pwd;
		$this->db	= $db;
	}

	/**
	*	Conecta ao banco de dados
	*/
	function connect()
	{
		if ( $this->link = @mysql_connect($this->host, $this->user, $this->pwd) )
			$this->setDb();
		else
			exit;
		return $this->link;
	}

	/**
	*	Desconecta do banco de dados
	*/
	function disconnect()
	{
		if (!@mysql_close($this->link))
			$this->morra("Não foi possivel desconectar do servidor");
		unset($this->link);
		return $ret;
	}

	/**
	*	Versão interna da função die()
	*/
	function morra( $error )
	{
		$strDie = $error." (".mysql_error().")";
		if ($this->sql)
			$strDie .= "<br>Última Query:<br><b>".htmlspecialchars($this->sql)."</b>";
		user_error($strDie, E_USER_ERROR);
		exit;
	}

	function result($row, $col = 0)
	{
		return mysql_result($this->result, $row, $col);
	}

	/**
	*	Mesmo que mysql_fetch_assoc
	*/
	function fetchAssoc( $result = null )
	{
		return mysql_fetch_assoc( ($result) ? $result : $this->result );
	}

	/**
	*	Seleciona o DB
	*	@param	$db	Banco de dados
	*	@returns True se tudo Ok, False se ocorreu algum erro e $dieonfailure = false
	*/
	function setDb($db = null)
	{
		if ($db)
			$this->base = $db;

		if (!mysql_select_db($this->db, $this->link))
			if (error_reporting())
				$this->morra("Não foi possível selecionar o banco de dados.");
			else
				return false;
		return true;

	}

	function affectedRows()
	{
		return mysql_affected_rows($this->link);
	}

	function numRows()
	{
		return mysql_num_rows($this->result);
	}

	/**
	*	Coloca caracteres de escape antes de aspas, mas faz isso apenas
	*	se a opção magic_quotes_gpc no php.ini for false ou se $force
	*	for verdadeiro.
	*	@param	$s		String
	*	@param	$force	Forçar magic quotes ?
	*/
	function escapeString($s, $force = false)
	{
		if (!$this->magicquotes || $force)
			return mysql_escape_string($s);
		return $s;
	}

	/**
	*	mesma coisa de escapeString(), com exeção de chamar
	*	htmlspecialchars() internamente.
	*	@param	$s		String
	*	@param	$force	Forçar magic quotes ?
	*	@see escapeString
	*/
	function escapeHTMLString($s, $force = false)
	{
		if (!$this->magicquotes || $force)
			return mysql_escape_string(htmlspecialchars($s));
		return htmlspecialchars($s);
	}

	/**
	*	mysql_insert_id()
	*/
	function insertedID()
	{
		return mysql_insert_id($this->link);
	}

	/**
	*	Reseta o ponteiro do resultado para o inicio
	*/
	function reset()
	{
		mysql_data_seek($this->result, 0);
	}

	/**
	*	Número de queries executadas até agora.
	*/
	function numQueries()
	{
		return $this->numqueries;
	}

	/**
	*	Executa uma query
	*	@params	$sql	Query SQL
	*	@params	$file	Nome do arquivo, normalmente a constante __FILE__
	*	@params	$line	Número da linha, normalemnte a constante __LINE__
	*	@params	$silent	Não reportar erro da query em stdout.
	*	@returns	MySQL Result
	*/
	function query($sql='', $file = 'arquivo não espeficado', $line = 'linha não especificada', $silent = false)
	{
		if (!$this->link)
			$this->connect();
		$this->numqueries++;
		if ($sql!='')
			$this->sql = $sql;
		$this->result = mysql_query($this->sql, $this->link);
		if (!$this->result)
		{
			if ($silent)
				return false;
			$this->morra("Ocorreu um erro efetuando a query em $file:$line");
		}
		return $this->result;
	}
}

Return current item: MUSPA