<?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;
}
}