En línea a lo que veníamos trabajando, hemos mejorado nuestra propuesta, simplificando y aclarando algunas ideas.
El siguiente artículo es una actualización de lo publicado en Un framework para consultas preparadas a la Base de Datos. Sin embargo, para no liarnos demasiado, lo haremos a un lado y empezaremos aquí desde cero.
Un solo método para ejecutar sentencias que no devuelven datos
En principio, en sql existen dos tipos de consultas, las que devuelven y las que no devuelven datos. El primer grupo, ejecuta sentencias SELECT. El segundo grupo, ejecuta sentencias como: INSERT, UPDATE y DELETE. Para todas estas últimas, proponemos un único método: safeExec.
public db::safeExec(string $query, …$params);
query
La consulta sql
params
Los valores de relleno de la consulta. Puede ser un único array con todos los valores de relleno, o un nuevo argumento por cada valor. Esto le confiere mucha flexibilidad. Veamos dos ejemplos con el mismo resultado:
$db->safeExec("UPDATE `tbl_name` SET `name` = ? WHERE id = ?", [$name, $id]);
$db->safeExec("UPDATE `tbl_name` SET `name` = ? WHERE id = ?", $name, $id);
El método safeExec devuelve el número de filas afectadas, en mysqli será la propiedad: affected_rows.
Los conjuntos
Tanto para insertar como editar una fila, se parte de un array asociativo con el nombre del campo a editar y el valor correspondiente.
$set = ['field1' => $value1, 'field2' => $value2];
A continuación, mostraremos un ejemplo por cada sentencia.