Clase utilitaria para manejar bases de datos MySQL. Compatible con PHP 5 y PHP 7. Utiliza la librería nativa PDO de PHP.
Copia el archivo db.php
en el directorio donde quieras utilizar la clase, e inclúyela en tu código:
include_once "PDOHelper.php";
Crea una nueva instancia de la clase (es decir, una nueva conexión con la base de datos):
$pdb = new PDOHelper($dbs, $usr, $pwd);
$dbs
: Nombre de la base de datos.$usr
: Nombre de usuario.$pwd
: Contraseña.Devuelve: Identificador del objeto PDO instanciado.
Ya puedes empezar a utilizar las funciones de la clase.
La clase incluye una serie de funciones para facilitar operaciones básicas con filas y tablas:
PDOHelper->checkTable()
PDOHelper->executeDB()
PDOHelper->get()
PDOHelper->getArray()
PDOHelper->getSelectedArray()
PDOHelper->getRow()
PDOHelper->insert()
PDOHelper->insertEx()
PDOHelper->update()
PDOHelper->delete()
PDOHelper->query()
PDOHelper->id()
PDOHelper->msg
Comprueba si existe la tabla y, si no existe, la crea.
$table
: Nombre de la tabla.$table_parameters
: Parámetros de creación de la tabla.Devuelve:
TRUE
si la tabla existe o ha podido crearse,FALSE
si no.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
if ($pdb->checkTable('mitabla', 'id int, nombre varchar(255), apellidos varchar(255)')) {
echo 'La tabla existía o ha sido creada con los parámetros especificados.';
} else {
echo 'La tabla no existe y no ha podido ser creada.';
}
Ejecuta una consulta de MySQL. Esta función no devuelve resultados de consultas y se incluye solo para completar el repertorio de funciones.
$query
: Consulta SQL.Devuelve:
TRUE
si la ejecución ha funcionado,FALSE
si no.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
if ($pdb->executeDB( 'UPDATE mitabla SET VALUES nombre="José" WHERE nombre="Juan";' )) {
echo 'Instrucción ejecutada con éxito.';
} else {
echo 'Instrucción fallida.';
}
Recupera un dato único de la fila que coincide con la búsqueda indicada.
$tabla
: Tabla en la que hacer la consulta.$valor
: Columna de la que recuperar el valor.$columna
: Columna cuyo valor hay que comparar.$busqueda
: Valor con el que comparar el valor de $columna.Devuelve: Valor solicitado si funciona,
FALSE
si no.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$apellidosDeJose = $pdb->get( 'mitabla', 'apellidos', 'nombre', 'José' );
if ($apellidosDeJose === FALSE) {
echo 'No se ha encontrado ninguna fila en la que el valor de la columna nombre sea "José"';
} else {
echo 'Apellidos de José: '.$apellidosDeJose;
}
Recupera un dato único de la fila que coincide con la búsqueda indicada.
$tabla
: Tabla en la que hacer la consulta.$columna
: Columna cuyo valor hay que comparar. (defecto = "")$busqueda
: Valor con el que comparar el valor de $columna. (defecto = "")Devuelve: Matriz de filas solicitadas si funciona, FALSE si no.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$filas = $pdb->getArray( 'mitabla', 'nombre', 'José' );
if ($filas === FALSE) {
echo 'La consulta ha fallado.';
} else {
if (count($filas) === 0) {
echo 'No se ha encontrado ninguna entrada con nombre = "José"';
} else {
echo 'Apellidos de entradas con nombre = "José":';
foreach ($filas as $fila) {
echo $fila['apellidos'];
}
}
}
Recupera la matriz de filas que cumplen la condición de tener el valor proporcionado en una columna determinada.
$tabla
: Tabla en la que hacer la consulta.$condiciones
: Matriz de pares de clave y valor que estipulan condiciones de identidad para la búsqueda. (defecto = array())$orden
: Columna que ha de regir el orden de la matriz solicitada. (defecto = "")$direccion
: Dirección del orden solicitado. (defecto = "ASC")$limit
: Límite de número de filas recuperadas. (defecto = "")Devuelve: Matriz de filas solicitadas si funciona, FALSE si no.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$filas = $pdb->getSelectedArray( 'mitabla', array('nombre' => 'José'), 'DESC', '5' );
if ($filas === FALSE) {
echo 'La consulta ha fallado.';
} else {
if (count($filas) === 0) {
echo 'No se ha encontrado ninguna entrada con nombre = "José"';
} else {
echo 'Entradas con nombre = "José", por orden descendiente, máximo 5:';
foreach ($filas as $fila) {
echo $fila['apellidos'];
}
}
}
Recupera una fila de una tabla.
$tabla
: Tabla en la que hacer la consulta.$id
: ID de la fila buscada.Devuelve: Fila solicitada si funciona, FALSE en caso de fallo.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$fila = $pdb->getRow( 'mitabla', 1 );
if ($fila === FALSE) {
echo 'La consulta ha fallado.';
} else {
echo 'Apellidos de fila 1: '.$fila['apellidos'];
}
Inserta una fila con datos proporcionados por un array asociativo en las columnas con nombre indicado por las claves del array.
$tabla
: Tabla en la que hacer la inserción.$datos
: Array asociativo cuyas claves coinciden con las columnas en las que insertar los valores.Devuelve: ID de la fila insertada, FALSE en caso de fallo.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$id = $pdb->insert( 'mitabla', array('nombre' => 'Juan', 'apellidos' => 'García') );
if ($id === FALSE) {
echo 'No se ha podido insertar la entrada.';
} else {
echo 'ID de la fila insertada: '.$id;
}
Inserta una fila con datos proporcionados por un array asociativo en las columnas con nombre indicado por las claves del array y aplica a esos datos la operación indicada.
$tabla
: Tabla en la que hacer la inserción.$datos
: Array asociativo cuyas claves coinciden con las columnas en las que insertar los valores.$op
: Operación que debe incluirse para cada dato suministrado.$values
: Array de valores a los que debe aplicarse la operación.Devuelve: ID de la fila insertada, FALSE en caso de fallo.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
// Inserta la entrada con la primera letra del apellido en mayúscula
$id = $pdb->insertEx( 'mitabla', array('nombre' => 'Juan', 'apellidos' => 'garcía'), 'ucfirst', array('apellidos') );
if ($id === FALSE) {
echo 'No se ha podido insertar la entrada.';
} else {
echo 'ID de la fila insertada: '.$id;
}
Cambia los datos de la fila indicada de una tabla según los datos proporcionados por un array asociativo en las columnas con nombre indicado por las claves del array.
$tabla
: Tabla que se va a modificar.$datos
: Datos y valores que se van a modificar.$id
: ID de la fila que se va a modificar.Devuelve: TRUE si funciona, FALSE si no.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$res = $pdb->update( 'mitabla', array('nombre' => 'Jorge'), 1 );
if ($res === FALSE) {
echo 'No se ha podido modificar la entrada.';
} else {
echo 'Fila modificada.';
}
Elimina la fila indicada de una tabla según los datos proporcionados por un array asociativo en las columnas con nombre indicado por las claves del array.
$tabla
: Tabla que se va a modificar.$datos
: Datos que se van a comparar para seleccionar las filas que se quieren eliminar.Devuelve: TRUE si funciona, FALSE si no.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$res = $pdb->delete( 'mitabla', array('nombre' => 'Juan') );
if ($res === FALSE) {
echo 'No han podido eliminarse las entradas con nombre = "Juan"';
} else {
echo 'Se han eliminado las entradas con nombre = "Juan".';
}
Hacer consulta SQL.
$sql
: Consulta SQL.Devuelve: Matriz de resultados si funciona, FALSE si no.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$filas = $pdb->query( 'SELECT * FROM mitabla WHERE nombre="Juan"' );
if ($filas === FALSE) {
echo 'No han podido recuperarse los datos de la consulta.';
} else {
echo 'Apellidos de entradas con nombre = "Juan":';
foreach ($filas as $fila) {
echo $fila['apellidos'];
}
}
Recupera el identificador del objeto (la conexión con la base de datos MySQL).
$sql
: Consulta SQL.Devuelve: Identificador del objeto (la conexión con la base de datos MySQL).
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$pdb_id = $pdb->id();
if ($pdb === $pdb_id) {
echo 'Se ha recuperado el identificador del objeto PDO.';
} else {
echo 'Algo ha fallado';
}
Último mensaje de error.
Devuelve: Último mensaje de error generado por operaciones fallidas.
$pdb = new PDOHelper('mibasededatos', 'usuario', 'contraseña');
$res = $pdb->delete( 'tablainexistente', array('nombre' => 'Juan') );
if ($res === FALSE) {
echo 'No han podido eliminarse las entradas con nombre = "Juan"';
echo 'Mensaje de error:';
echo $pdb->msg;
} else {
echo 'Se han eliminado las entradas con nombre = "Juan".';
}