septiembre 10, 2009 0

Consultas parametrizadas en PHP. Parte I.

By in PHP

Cuando realizamos una consulta a una base de datos normalmente esta lleva algún parámetro por el que filtramos. Para ello lo que se suele hacer es algo parecido a lo siguiente:

$consulta = "SELECT nombre FROM usuarios WHERE login='".escapar($login)."'";
$resultado = ejecutarConsulta($consulta);

En ese trozo de código obtenemos el nombre de un usario sabiendo el login de este. Para ello creamos la consulta concatenando cadenas, escapamos el valor del login (con la hipotética función escapar) para prevenir ataques SQL injection y luego llamamos a una, hipotética de nuevo, función llamada ejecutarConsulta (por ejemplo mysql_query) que nos devolverá los datos de la consulta.

Lo que propongo es usar una función que nos genere la consulta a partir de una consulta parametrizada. El prototipo de esta función es el siguiente:

string prepararConsulta(string $consulta, array $parametros);

Esta función nos devolverá una cadena con la consulta ya preparada y los paáametros se los pasaremos como un array. Se podrá parametrizar la consulta de dos formas distintas, mediante parámetros sin nombre o con parámetros con nombre. Veamos las dos formas:

Parámetros sin nombre:

SELECT fields FROM table WHERE cond1=? AND cond2=? AND cond3=?

Parámetros sin nombre:

SELECT fields FROM table WHERE cond1=:val1 AND cond2=:val2 AND cond3=:val3

Si habeis usado ADODb os sonará esta forma de hacer consultas.

En la siguiente parte del artículo veremos como podemos implementar una primera versión de esta función.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: , ,

Leave a Reply