Mi Clase de conexion a Bases de Datos
Código PHP:
######################################
# Clase de Conexion a Base de Datos #
# Cristian Conedera #
# http://www.nitrous.com.ar/ #
######################################
class dbCon {
//Atributos de conexion
var $host;
var $user;
var $pass;
var $db;
//Identificadores de Conexion
var $conID = 0;
var $queryID = array();
var $campo;
var $row = array();
// Modo de Debug
var $debug = 0;
var $debugLOG;
// Constructor
function dbCon ($host="localhost",$user="root",$pass="",$db="")
{
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->db = $db;
}
// Conexion a la base de datos
function conectar($host,$user,$pass,$db)
{
if($host=="" || $user=="" || $db=="") die("No se ingresaron todos los datos de conexión<br>");
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->db = $db;
$this->conID = @mysql_connect($this->host,$this->user,$this->pass);
if(!$this->conID) {
die("<b>Error al conectar al Servidor MySQL: </b>".mysql_error());
} else { if($this->debug) echo "Se realizo la conexion con exito (".$this->host.",".$this->user.",".$this->pass.")<br>"; }
mysql_select_db($this->db,$this->conID);
if($this->debug) echo "Se selecciono la base de datos <b>".$this->db."</b><br>"; #debug
return $this->conID;
}
// Hacer consulta
function consulta ($consulta,$ident=NULL)
{
if(empty($ident)) { die("El identificador de consulta no puede estar vacío"); }
if(empty($consulta)) { die("La consulta no puede estar vacía"); }
$this->queryID[$ident] = mysql_query($consulta,$this->conID);
if(!$this->queryID[$ident])
{
die("<b>Error al ejecutar la consulta:</b> \"".$consulta."\"<br><b>MySQL dice:</b> ".mysql_error($this->conID));
}
else
{
if($this->debug) echo "Se ejecuto la consulta<b> \"$consulta\"</b> con el ID: <b>$ident</b> exitósamente.<br>";
}
return $this->queryID[$ident];
}
// Cuenta numero de registros
function numreg($ident=NULL)
{
if(!$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
if($this->debug) echo "Se solicito el numero de registros de <b>$ident</b><br>"; #debug
return mysql_num_rows($this->queryID[$ident]);
}
// Cuenta numero de campos
function numcampos($ident=NULL)
{
if(!$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
if($this->debug) echo "Se solicito el numero de campos de <b>$ident</b><br>"; #debug
return mysql_num_fields($this->queryID);
}
// Muestra el contenido de un campo del registro especificado por $offset
function busca($campo,$offset=0,$ident=NULL)
{
if(!$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
if($this->debug) echo "Se solicito el contenido del campo <b>\"$campo\"</b> registro nº <b>$offset</b> de la consulta <b>$ident</b><br>"; #debug
$temp = @mysql_result($this->queryID[$ident],$offset,$campo);
if(!$temp) die("El campo $campo o el registro $offset no existe");
return $temp;
}
function recorre($ident=NULL)
{
if(!$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
$this->row[$ident] = mysql_fetch_array($this->queryID[$ident]);
return $this->row[$ident];
}
// Muestra el contenido de un campo dentro de una consulta con mysql_fetch_array();
function campo($campo,$ident=NULL)
{
if(!$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
if(!array_key_exists($campo,$this->row[$ident])) die("No existe el campo solicitado");
return $this->row[$ident][$campo];
}
// Libera los resultados del Query
function liberar($ident=NULL)
{
if(!$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
if($this->debug) echo "Se liberaron los resultados de la consulta $ident<br>"; #debug
return mysql_free_result($this->queryID[$ident]);
}
// Cierra Base de Datos
function cerrar()
{
if($this->debug) echo "Se cerro la conexion con la base de datos<br>"; #debug
return mysql_close($this->conID);
}
function check_ident($ident=NULL)
{
$valido = 1;
if(empty($ident)) $valido = 0;
else
if(!array_key_exists($ident,$this->queryID))
$valido = 0;
return $valido;
}
}
Aún le falta perfeccionar un poco los mensajes del Debug.
Y creo que va a haber problema (no lo chequee todavía) con la función campo() cuando queramos recorrer dos arrays de Bases de Datos con loops anidados.
No es la mejor clase, pero es la primera que hago...
Cualquier sugerencia es bienvenida