dbConnect
Publicado por Lucas Vasconcelos 23/12/2004
[ Hits: 5.632 ]
Homepage: http://www.mma.com.br/~vasconcelos/
Download dbconnect-2.0b.tar.gz
Classe para conexao com banco de dados MySQL. Vem com uma classe para controle de erros. Foi inspirada na PEAR::DB.
<?php
// +-----------------------------------------------------------------------+
// | dbConnect 2 |
// +-----------------------------------------------------------------------+
// | This program is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU General Public License |
// | as published by the Free Software Foundation; either version 2 |
// | of the License, or any later version. |
// | |
// | This program is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with this program; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
// | USA. |
// +-----------------------------------------------------------------------+
// | Author: Lucas S. Vasconcelos |
// +-----------------------------------------------------------------------+
//
// $Id dbconnect.class.php, v2.0b 2004/12/23 10:03:30 vasconcelos Exp $
// {{{ dbConnect
/**
* A classe `dbConnect` foi construida com a intencao de prover
* uma forma simples e poderosa de fazer acessar bancos de dados
* baseados em MySQL.
*
* @version 2.0
* @author Lucas S. Vasconcelos <sh4d0wn@gmail.com>
* @link http://sh4d0wn.blogspot.com
*/
class dbConnect {
// {{{ attributes
var $error = null;
var $conn = null;
var $db_name = 'test';
var $num_query = 0;
// }}}
// {{{ dbConnect()
/**
* Constructor da classe. abre conexao com o servidor MySQL. Em caso
* de erro retorna falso e instancia um objeto `dbError`.
*
* <code>
* <?php
* require 'dbconnect.class.php';
*
* $hdb =& new dbConnect('test');
*
* if ( dbError::isError($hdb) ) {
* $hdb->getMessage();
* }
*
* ?>
* </code>
*
* @access public
* @param String $db_name
* @param String $localhost
* @param String $user
* @param String $pass
* @return mixed; Success return `dbConnect` Object
* Error return false
* @see dbError::dbError()
*/
function dbConnect($db_name, $host = 'localhost', $user = 'root', $pass = '')
{
if ( !$conn = @mysql_connect(&$host, &$user, &$pass) ) {
$this->error =& new dbError(mysql_errno(), __FILE__, __LINE__, 'dbConnect::dbConnect()', mysql_error());
return false;
} else {
$this->conn = $conn;
$this->setDb($db_name);
}
}
// }}}
// {{{ query()
/**
* Este metodo retorna um objeto do tipo `dbResult`. Caso ocorra algum erro,
* dentro do objeto `dbResult` sera criado um objecto do tipo `dbError` para
* auxiliar o tratamento deste.
*
* <code>
* <?php
* // uma vez que $hdb seja o objeto `dbConnect`
* $result = $hdb->query("SELECT * FROM tabela");
* if (dbError::isError($result) {
* die($result->getMessage());
* }
* ?>
* </code>
*
* @access public
* @param String $query
* @return Object dbResult
* @see dbResult::dbResult()
*/
function query($query)
{
$this->num_query++;
if ( !$result = @mysql_query($query, $this->conn) ) {
$err = 1;
}
return (new dbResult($result, $err));
}
// }}}
// {{{ numQuery()
/**
* Retorna numero de querys executadas.
*
* @access public
* @return Integer
*/
function numQuery()
{
return $this->numQuery;
}
// }}}
// {{{ close()
/**
* Fecha a conexao com a base de dados
*
* @access public
* @return void
*/
function close()
{
@mysql_close($this->conn);
}
// }}}
// {{{ setDb()
/**
* Altera o Banco de Dados selecionado ou seleciona um ;-).
* Em caso de erro como em todos os outros metodos e criado um
* objeto `dbError`.
*
* @access public
* @param String $db_name
* @return void
*/
function setDb($db_name)
{
if ( !@mysql_select_db($db_name, $this->conn) ) {
$this->error =& new dbError(mysql_errno(), __FILE__, __LINE__, 'dbConnect::setDb()', mysql_error());
} else {
$this->db_name = $db_name;
}
}
// }}}
// {{{ getDb()
/**
* Retorna o nome do DB que esta sendo usado.
*
* @access public
* @return String
*/
function getDb()
{
return $this->db_name;
}
// }}}
// {{{ getInfo()
/**
* Esta funcao retorna informacoes detalhadas sobre a ultima query.
* Requer PHP 4 >= 4.3.0, PHP 5
*
* @access public
* @return String
* @link http://br2.php.net/mysql_info
*/
function getInfo()
{
return @mysql_info();
}
// }}}
// {{{ getLastId()
/**
* Retorna o ID do ultimo insert realizado. Isso é util para
* voce nao precisar fazer um select depois de inserir algo no BD ^^
*
* @access public
* @return mixed
* @link http://br2.php.net/mysql_insert_id
*/
function getLastId()
{
return @mysql_insert_id();
}
// }}}
}
// }}}
// {{{ defines
/**
* Metodos padrao para retorno de array
*
* @see dbResult::getArray()
*/
define('DB_FETCHMODE_ROWS', '_fetchRows');
define('DB_FETCHMODE_ASSOC', '_fetchAssoc');
define('DB_FETCHMODE_OBJECT', '_fetchObject');
// }}}
// {{{ dbResult
/**
* Esta classe foi criada na versao 2.0. Ela permite maior comodidade para
* a manipulacao de resultados das suas consultas.
*
* @version 1.0
* @author Lucas S. Vasconcelos <sh4d0wn@gmail.com>
*/
class dbResult {
// {{{ attributes
/**
* Guarda o resource link de uma query
*
* @access private
* @var resource
*/
var $result = null;
/**
* Objeto do tipo `dbError`
*
* @access private
* @var Object
*/
var $error = null;
// }}}
// {{{ dbResult()
/**
* Caso tenha acontecido um erro a variavel `$err` sera `1` entao e instanciado
* um objeto `dbError`.
*
* @access public
* @param resource link $result
* @param Integer $err
* @return void
*/
function dbResult($result, $err)
{
if ( isset($err) && ($err == 1) ) {
$this->error =& new dbError(mysql_errno, __FILE__, __LINE__, 'dbConnect::dbQuery()', mysql_error());
} else {
$this->result = $result;
}
}
// }}}
// {{{ result()
/**
* Resupera o resultado de uma query. O parametro `$line` e opcional.
* Sendo que o padrao e a linha `0`(a primeira linha da fila).
*
* @access public
* @param String $field
* @param Integer $line
* @return mixed
*/
function result($field, $line = 0)
{
if (! $result = @mysql_result($this->result, $line, $field)) {
$this->error =& new dbError(mysql_errno, __FILE__, __LINE__, 'dbResult::result()', mysql_error());
return false;
} else {
return $result;
}
}
// }}}
// {{{ rows()
/**
* Retorna o numero de linhas afetadas pela query.
*
* @access public
* @return Integer
*/
function rows()
{
return @mysql_num_rows($this->result);
}
// }}}
// {{{ getArray()
/**
* Retorna um array com o resultado da query. Existem tres metodos
* de retorno do array.
*
* DB_FETCHMODE_ROWS - Retorna um array com idices numericos
* DB_FETCHMODE_ASSOC - Retorna um array associativo
* DB_FETCHMODE_OBJECT - Retorna um array de objetos
*
* O array retornado tem esta aparencia:
*
* <code>
* ARRAY (
* [0] => ARRAY (
* [index] => [valor]
* [index] => [valor]
* )
* [1] => ARRAY (
* [index] => [valor]
* [index] => [valor]
* )
* )
* </code>
*
* Onde `index` e um objeto, um indicie ou uma string (nome do db).
*
* @access public
* @param String $fetch_mode
* @return Array
*/
function getArray($fetch_mode = DB_FETCHMODE_ASSOC)
{
return $this->$fetch_mode();
}
// }}}
// {{{ _fetchRows()
/**
* Gera array indexado com o resultado da query
*
* @access private
* @return Array
*/
function _fetchRows()
{
while ( $row = @mysql_fetch_row($this->result) ) $array[] = $row;
return $array;
}
// }}}
// {{{ _fetchAssoc()
/**
* Gera array indexado com o resultado da query
*
* @access private
* @return Array
*/
function _fetchAssoc()
{
while ( $row = @mysql_fetch_assoc($this->result) ) $array[] = $row;
return $array;
}
// }}}
// {{{ _fetchObject()
/**
* Gera array indexado com o resultado da query
*
* @access private
* @return Array
*/
function _fetchObject()
{
while ( $row = @mysql_fetch_object($this->result) ) $array[] = $row;
return $array;
}
// }}}
}
// }}}
// {{{ dbError
/**
* Esta classe e responsavel pelo tratamento de erros do sistema. Permite
* acesso estatico a alguns metodos. Ainda nao esta concluida.
*
* @version 1.0a
* @author Lucas S. Vasconcelos <sh4d0wn@gmail.com>
*/
class dbError {
// {{{ attributes
/**
* Numero do erro MySQL
*
* @access private
* @var Integer
* @see mysql_errno()
* @link http://br2.php.net/mysql_errno
*/
var $num_error = -1;
/**
* Nome do arquivo em que o erro foi gerado
*
* @access private
* @var String
*/
var $file_name;
/**
* Numero da linha que aconteceu o erro
*
* @access private
* @var Integer
*/
var $line_num;
/**
* Menssagem de erro do MySQL
*
* @access private
* @var String
*/
var $menssage;
/**
* Nome do metodo que gereou o erro
*
* @access private
* @var String
*/
var $method;
/**
* Data/Hora no formato unix timestamp
*
* @access private
* @var Integer
*/
var $now;
// }}}
// {{{ dbError()
function dbError($mysql_errno, $file, $line, $method, $mysql_err)
{
$this->now = time();
$this->num_error = $mysql_errno;
$this->file_name = $file;
$this->line_num = $line;
$this->method = $method;
$this->message = $mysql_err;
$this->saveLog();
}
// }}}
// {{{ isError()
function isError($obj)
{
if (is_object($obj->error) && isset($obj->error->num_error)) {
//echo 'verdadeiro';
return true;
} else {
//echo 'falso';
return false;
}
}
// }}}
// {{{ getMessage()
/**
* Este metodo sera acessado estaticamente. Ele retorna a menssagem de erro
* formatada. Esta menssagem pode ser salva em um arquivo de log ou exibida
* da saida.
*
* @access public
* @return String
*/
function getMessage($obj)
{
$message = '
['.date("d/m/Y", $obj->error->now).'] Error! ('.$obj->error->num_error.') on file '.$obj->error->file_name.'['.$obj->error->line_num.']'."\n"
.$obj->error->method.': '.$obj->error->message;
return $message;
}
// }}}
// {{{ redirect()
// TODO: a construir
// }}}
// {{{ saveLog()
// TODO: a construir
function saveLog()
{
}
// }}}
}
// }}}
?>
Script Para Conectar-se Ao Banco de dados PostGreSQL [golfinho/Elefante]
Nova conexão ao banco de dados PDO
Backup Mydumper + Screen + Compactação com 7Zip
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Erro no suitable vídeo mode (0)
Erro no suitable vídeo mode (0)
Erro no suitable vídeo mode (0)
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)









