Depurar sentencias sql en PDO_mysql

PDO_MYSQL es un controlador que implementa la interfaz de Objetos de Datos de PHP (PDO) para permitir el acceso de PHP a bases de datos de MySQL 3.x, 4.x y 5.x.

Un ejemplo de sentencia típica de consulta con parámetros puede ser la siguiente:

$db = new PDO('mysql:host=servidor;dbname=nombrebbdd;charset=utf8', usuario, password);
$sql="INSERT INTO libroiva (campo1, campo2) VALUE (:valor1, :valor)";
$consulta = $db->prepare($sql);
$parametros=array(':valor1'=>"valor", ':valor1'=>"valor");

$estado = $consulta->execute($parametros);

Gracias a esta forma de introducir los parámetros, podemos evitar el peligroso sql injection y al mismo tiempo se simplifica bastante la creación de la sentencia, pero por otra parte, sobre todo cuando hay una gran cantidad de parámetros, su depuración se hace bastante tediosa.

Es por ello, que he creado esta simple función que le paso la sentencia original y el array de parámetros y me devuelve la sentencia ya construida con la siguiente función:

function debugSQL($sentencia, $params) {
foreach($params as $clave => $valor)
$sentencia=str_replace($clave, "'". $valor ."'", $sentencia);
return $sentencia;
}

Para mostrar la sentencia puedes hacerlo de esta manera:

print(debugSQL($sql, $parametros));





Como siempre, puedes invitarme a un café o un refresco. Gracias.

, , , , ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *