Hoy comparto con ustedes una clase muy corta y sencilla para poder crear sentencias SQL de manera segura. Basicamente lo que hace la clase es recibir un prototipo de sentencia y un arreglo de parámetros. La clase formatea los parámetros de acuerdo a los modificadores de formato que vaya encontrando.
class SQLQuery {
private $query;
public function __construct($query) {
$this->query = $query;
}
public function setArguments($arguments, $acceptNull = false) {
$arguments = array_pad($arguments, -1 - count($arguments), current($arguments));
if ($acceptNull) {
$this->query = preg_replace('/%[ |-]?'?[^?deeufFosxX]?d*?.?d*([b|c|d|e|u|f|F|o|s|x|X|%])/e', '\1' == '%' ? '%' : next($arguments) != null ? sprintf('\0', current($arguments)) : 'NULL'', $this->query);
}
else {
$this->query = preg_replace('/%[ |-]?'?[^?deeufFosxX]?d*?.?d*([b|c|d|e|u|f|F|o|s|x|X|%])/e', 'sprintf('0', '1' == '%' ? '' : next($arguments))', $this->query);
}
}
public function getQuery() {
return $this->query;
}
}
Los formatos que se pueden especificar son los mismos que utiliza la función printf() y sprintf(). En el archivo van a encontrar la clase, un ejemplo y un directorio con la versión para PHP 4. Si la llegan a utilizar y encuentran algún bug o error inesperado agradecería que me lo comunicaran. Espero les resulte útil.
Descargar