Y aquí dejo algunas clases (que no son robadas de internet. Si me sirvieron de influencia algunas que encontré, obviamente)
CONEXION A BD
Código PHP:
class mysqldb_conexion {
/* SERVER LOGIN */
var $BaseDatos;
var $Servidor;
var $Usuario;
var $Clave;
/* ID de CONEXION */
var $Conexion_ID = 0;
/* ERROR STRING */
var $error;
/******************************************************************************
* *
* METODOS *
* *
******************************************************************************/
/**************************************************************** CONSTRUCTOR */
function mysqldb_conexion($bd) {
// Si NO llega un array de datos, veo si es un archivo.
if ( !is_array($bd) ) {
// Si me pasan un archivo de configuración alternativo, controlo que exista.
if ($bd != NULL && !file_exists($bd)) {
$this->error("[<b>mysqldb_conexion</b>] Error al construir objeto: El archivo de conexion (".$config_file.") no existe.");
return false;
} else {
include_once($bd);
}
}
// Cargo la configuración del servidor MySQL
$this->BaseDatos = $bd['0'];
$this->Servidor = $bd['1'];
$this->Usuario = $bd['2'];
$this->Clave = $bd['3'];
}
/**************************************************************** DESSTRUCTOR */
function destroy() {
// Nos aseguramos de haber cerrado la conexión a la BD
$this->cerrar();
// 'destruimos' el objeto
settype(&$this, 'null');
}
/*
* Un metodo simple para mostrar errores al usuario. Si no recibe argumento,
* simplemente muestra el contenido de $this->error. Caso contrario, carga
* $this->error con un string.
*
******************************************************************************/
function error() {
switch (func_num_args()) {
case 1:
$this->error = func_get_arg(0);
break;
default:
return $this->error;
break;
}
}
/*
* Metodo para conectarse a la Base de Datos.
* Devolvera "false" si la conexión falla por alguna razón, y guardará un
* mensaje de error en $this->error, el que puede ser mostrado con
* $this->error()
*
******************************************************************************/
function conectar(){
// Si ya existe una conexión abierta al intentar conectar, la cerramos.
if ($this->Conexion_ID != "0") {
$this->error("[<b>mysqldb_conexion</b>] Error al conectar a la Base de Datos: Ya existe una conexión activa, cierrela antes de volver a conectar.");
return false;
}
// Conectamos al servidor
if ( !($this->Conexion_ID = @mysql_connect($this->Servidor, $this->Usuario, $this->Clave)) ) {
$this->error("[<b>mysqldb_conexion</b>] Error al conectar a la Base de Datos:<br/> MySQL: [".mysql_errno()."] ".mysql_error()."<br/>");
return false;
}
// Seleccionamos la base de datos
if ( !(mysql_select_db($this->BaseDatos, $this->Conexion_ID)) ) {
$this->error("[<b>mysqldb_conexion</b>] Error al conectar a la Base de Datos:<br/>MySQL: [".mysql_errno()."] ".mysql_error()."<br/>");
return false;
}
// Si todo salió bien, retornamos el ID de conexión (lo que antes usabamos como $link)
return $this->Conexion_ID;
}
/*
* Cerrr la conexion a la BD.
*
******************************************************************************/
function cerrar() {
if ( !(mysql_close($this->Conexion_ID)) ) {
$this->error("[<b>mysqldb_conexion</b>] Error al cerrar conexión:<br/>MySQL: [".mysql_errno()."] ".mysql_error()."<br/>");
return false;
}
return true;
}
} // FIN de la clase
CONSULTAS A LA BD
Código PHP:
<?php
class mysqldb_consulta {
/* Variables asociadas a consultas */
var $Consulta_ID;
var $conexion;
/* Flag para limpiar automaticamente los resultados cuando sea necesario */
var $qflag = 0;
/* String para almacenar mensajes de error */
var $error;
/******************************************************************************
* *
* METODOS *
* *
******************************************************************************/
/**************************************************************** CONSTRUCTOR */
/*
* Recibimos una referencia hacia un objeto mysqldb_conexion.
*
******************************************************************************/
function mysqldb_consulta(&$conexion) {
if ($conexion != "") { $this->conexion = &$conexion; }
}
/**************************************************************** DESSTRUCTOR */
function destroy() {
// Nos aseguramos de limpiar la memoria utilizada para almacenar recordsets
$this->free();
// 'destruimos' el objeto
settype(&$this, 'null');
}
/************************************** RECIBIR / CARGAR VARIABLES "GLOBALES" */
/*
* Un metodo simple para mostrar errores al usuario. Si no recibe argumento,
* simplemente muestra el contenido de $this->error. Caso contrario, carga
* $this->error con un string.
*
******************************************************************************/
function error() {
switch (func_num_args()) {
case 1:
$this->error = func_get_arg(0);
break;
default:
return $this->error;
break;
}
}
/*
* Este metodo accede a $this->Consulta_ID:
*
* A. Retorna el identificador de consulta si se pasa un comando de consulta
* como argumento y esta se realiza satisfactoriamente. Si la consulta
* no se realiza satisfactoriamente devolverá "false".
*
* B. Retorna el identificador de consulta si no se le pasan argumentos.
*
******************************************************************************/
function goquery() {
switch (func_num_args()) {
case 1:
$this->Consulta_ID = func_get_arg(0);
if(!$this->Consulta_ID) {
return false;
}
return true;
break;
default:
return $this->Consulta_ID;
break;
}
}
/*
* Realizamos un query a la base de datos. Devolvemos "false" y cargamos un
* mensaje de error si la consulta no se realizó satisfactoriamente.
*
* Si la consulta se realiza de forma satisfactoria devuelve "true".
*
******************************************************************************/
function consulta($sql) {
if ($this->conexion->Conexion_ID == 0) {
$this->error("[<b>mysqldb_consulta</b>] Imposible realizar consulta, no se ha establecido aún una conexión MySQL.<br/>");
return false;
}
// SI la consulta es de tipo SELECT y QFLAG está levantado, limpiamos
// la memoria de la consulta anterior.
if ( strtolower(substr($sql,0,6)) == "select") {
if ($this->qflag == 1) {
@mysql_free_result($this->Consulta_ID);
$this->qflag = 0;
} else {
$this->qflag = 1;
}
}
if ( !($this->goquery(@mysql_query($sql, $this->conexion->Conexion_ID)))) {
$this->error("[<b>mysqldb_consulta</b>] Error al ejecutar SQL:<br/>MySQL : ".mysql_error()."<br/>");
return false;
}
return true;
}
/*
* Devuelve el la cantidad de registros afectados por un update
*
******************************************************************************/
function affected() {
switch (func_num_args()) {
case 1:
$this->affected = func_get_arg(0);
break;
default:
return $this->affected;
break;
}
}
/*
* Devuelve el nombre de un campo de una consulta
*
******************************************************************************/
function nombrecampo($numcampo) {
return mysql_field_name($this->Consulta_ID, $numcampo);
}
/*
* Devuelve el número de campos de una consulta
*
******************************************************************************/
function numcampos() {
return mysql_num_fields($this->Consulta_ID);
}
/*
* Devuelve el número de registros de una consulta
*
******************************************************************************/
function numrows() {
return mysql_num_rows($this->Consulta_ID);
}
/*
* Devuelve un array con los registros obtenidos
*
******************************************************************************/
function get_array() {
return mysql_fetch_array($this->Consulta_ID, MYSQL_ASSOC);
}
/*
* Muestra una tabla con los resultados de la consulta.
*
* Este método está pensado solo para testear resultados de consultas.
*
******************************************************************************/
function debug_results() {
echo "<table border=1>\n
<tr>";
// mostramos los nombres de los campos
for ($i = 0; $i < $this->numcampos(); $i++){
echo "<td><b>".$this->nombrecampo($i)."</b></td>\n";
}
echo "</tr>\n";
// mostrarmos los registros
while ($row = mysql_fetch_row($this->Consulta_ID)) {
echo "<tr> \n";
for ($i = 0; $i < $this->numcampos(); $i++){
echo "<td>".$row[$i]."</td>\n";
}
echo "</tr>\n
</table>";
}
}
/*
* Mueve el índice del identificador de query al siguiente registro.
*
******************************************************************************/
function seek($indice) {
if ( !(mysql_data_seek($this->Consulta_ID, $indice))) {
$this->error("[<b>mysqldb_consulta</b>] Error al intentar mover índice:<br/>MySQL: <b>[".mysql_errno()."]</b> ".mysql_error()."<br/>");
return false;
}
return true;
}
/*
* Limpiamos los resultados de una consulta
*
******************************************************************************/
function free() {
if (qflag == 1) {
if (! (@mysql_free_result($this->Consulta_ID))) {
$this->error("[<b>mysqldb_consulta</b>]Error liberando identificador:<br/>MySQL: <b>[".mysql_errno()."]</b> ".mysql_error()."<br/>");
return false;
}
$this->qflag = 0;
return true;
}
}
} // FIN CLASE
?>