Clase para conectar con la base de datos

Publicado por Alejandro Escario en

Con el proyecto OGStats, estoy desarrollando una serie de clases, así como usando librerías bajo licencia LGPL para mejorar la experiencia del usuario a la hora de hacer uso de la aplicación, pues bien hoy vengo a hablaros de una clase que he puesto a disposición (está en la sección de descargas) de todo el mundo bajo licencia LGPL.

La clase anteriormente mencionada tiene la funcionalidad de conectar con una base de datos MySQL haciendo uso exclusivo de PHP, así que procedamos a comentar la clase, la verdad es que no es nada nuevo 😛.

Una de las características de las que he implementado que más me han gustado, es la de el modo de testeo, modo debug o como quieras llamarlo.

En condiciones normales cuando se produce un error en la base de datos, hace un tratamiento del error haciendo uso excepciones que son gestionadas dentro de la propia clase (para así evitar que el usuario se complique demasiado la vida) siendo el comportamiento estándar realizar un envío por correo electrónico al administrador informando de la ocurrencia de un error (siempre y cuando la configuración previa así lo indique); este correo va (siempre y cuando se haga un uso completo de os métodos de la clase) acompañado de la petición que lo ha hecho saltar, el motivo del error, el archivo y la línea dónde se ha producido sendo error.

Pero por el contrario, si tenemos activado el modo de testeo, sendos errores son visualizados por pantalla (en lugar de realizar el envío por correo) del siguiente modo:

  • Si se trata de una sentencia SELECT, la clase muestra una tabla con el contenido de la sentencia además de lo que mostraría con las de cualquier otro tipo.
  • En cualquier otro caso muestra la petición, la línea y el archivo de la misma, y en el caso de que se hubiese producido un error, éste se mostraría por pantalla.

Cuando está en este modo, además también muestra a pie de página el tiempo que ha sido necesario para generar la página (que  no en descargarla)

Algunos ejemplos:

$db = new database;
$db->setAttribute('host', $db_host);
$db->setAttribute('username', $db_username);
$db->setAttribute('password', $db_password);
$db->setAttribute('database', $db_name);
$db->setMail($db_emergencyMail);
$db->setTesting($db_testing);
//New db connection
$db->connect(true);

En esta pequeña parte de código, se establecen los valores necesarios para realizar la conexión con la base de datos, siendo las funciones:

$db->etMail($db_emergencyMail);
$db->setTesting($db_testing);

Completamente opcionales a la hora de crear la conexión, ya que si no se les establece ningún valor, directamente se anula el envio de correos electrónicos en caso de fallo, y se desactiva el modo de testeo respectivamente.

Otro aspecto a tener en cuenta es como realizar de forma correcta las sentencias SQL o Querys para sacarle el máximo partido a esta clase:

$query = 'SELECT * FROM mi_tabla';
$db->execute($query, __FILE__, __LINE__, true);

Analicemos uno a uno los argumentos que se le pasan al método execute:

  • $query: es el campo que contiene la sentencia SQL.
  • __FILE__: es una manera de indicar el archivo en el que nos encontramos (campo opcional).
  • __LINE__: es una forma de indicar la línea del archivo en la que nos encontramos (campo opcional).
  • El último argumento se corresponde con una variable que anula el muestreo de información en caso de encontrarnos en el modo de testeo, de manera que si está con el valor true, el mensaje no se mostrará, mientras que si se pone false o simplemente no se pone nada, éste no se mostrará (campo opcional). Este punto es especialmente importante si realizamos una petición entre etiquetas </tr><tr>, o similares, lo que incomodaría mucho la lectura del texto, porque la tabla en este caso pierde la estructura.

Por último mencionar que en un principio puede parecer un poco pesado seguir esta estructura , pero partiendo de mi experiencia personal, me ha servido para corregir relativamente rápido algunos fallos que se daban en OGStats, ya que el tiempo de localización del error se restringe mucho.

Descargar

*NOTA: todos los mensajes que muestra esta clase están marcados con la clase devInfo por si se les quiere dar algún formato en particular.

**NOTA: si haces uso de esta clase, dejases un comentario, así como si le ves algún error o tienes alguna sugerencia para las próximas versiones.


1 comentario

MyMysqli 1.5 | Dipler · octubre 12, 2010 a las 4:09 pm

[…] ya un tiempo, publiqué una clase para conectar desde PHP con MySQL, dicha clase, si bien cumplía perfectamente con su función, no era eficiente y tampoco le daba […]

Los comentarios están cerrados.