Post Actualizado en marzo 23, 2016


Consultas a base de datos desde Code Igniter

En Code Igniter es posible realizar consultas a la base de datos de una forma segura, evitando el ataque conocido como SQL injection, para ello tendremos que olvidarnos de la sintaxis de las consultas tradicionales para aplicar las propias del framework. Estamos acostumbrados a realizar consultas de SQL de la siguiente forma: “SELECT * FROM […]

En Code Igniter es posible realizar consultas a la base de datos de una forma segura, evitando el ataque conocido como SQL injection, para ello tendremos que olvidarnos de la sintaxis de las consultas tradicionales para aplicar las propias del framework.

Estamos acostumbrados a realizar consultas de SQL de la siguiente forma: “SELECT * FROM tabla”,  el primer paso para hacer el cambio de estilo es el siguiente código, que mediante Code Igniter, nos dará el mismo resultado:

$consulta = $this->db->get(‘tabla’);

Como podrán observar es realmente sencilla la transición de un estilo a otro, para hacer algo un poco más complejo, como un limit, se deberá hacer de la siguiente forma:

$consulta = $this->db->get(‘tabla’,10,20);

Esta tendrá su equivalente de la siguiente forma:

SELECT * FROM tabla LIMIT 20, 10 (únicamente funciona en MySQL)

Ya que hemos obtenido el resultado de la consulta en la variable $consulta, ahora podremos hacer uso de ella, muestro un ejemplo de un recorrido simple:

$consulta = $this->db->get(‘tabla’);

foreach ($consulta ->result() as $row)

{

    echo $row->titulo;

}

Como pueden observar, con este código tan simple, pudimos mostrar todos los valores registrados en el campo “titulo” de la tabla.

Para utilizar el “where” dentro de las cláusulas, se utiliza la siguiente sintaxis:

$this->db->where(‘name’, $name);

$this->db->where(‘title’, $title);

$this->db->where(‘status’, $status);

Como podrán observar, cada condición se pone de forma separada, cuestión que permite llevar un mejor orden visual al momento de programar, el resultado de una consulta a base de datos de forma tradicional, sería la siguiente:

WHERE name = ‘Joe’ AND title = ‘boss’ AND status = ‘active’

Si deseamos utilizar un “or” en lugar del “and” tendría que ser de la siguiente forma:

$this->db->or_where(‘id >’, $id);

Para unir dos o más tablas con “join” también se podrá realizar de una forma sencilla, como lo muestro a continuación:

$this->db->select(‘*’);

$this->db->from(‘blogs’);

$this->db->join(‘comments’, ‘comments.id = blogs.id’);

$query = $this->db->get();

El cual dará como resultado la siguiente consulta:

SELECT * FROM blogs

JOIN comments ON comments.id = blogs.id

Como se habrán dado cuenta, al momento de realizar mantenimiento a la aplicación realizada con Code Igniter, sobre todo en la parte de acceso a datos, se podrá realizar de una forma más sencilla.