Modularizar las sql como patrones y pasando valores por parámetro a éstos para sustituir un campo de máscara por el valor nos puede ayudar a migrar el código a procedimientos almacenados en el futuro.
filename.sql (& y # son máscaras en el sql file)
--
SELECT * FROM &tbl_Usuarios WHERE &cmp_Usuarios_usuario='#usuario';
--
código:
define("CORRECTO",1);
define("INCORRECTO",-1);
//$config_bd["tbl_Usuarios"]="usuarios";
//$config_bd["cmp_Usuarios_usuario"]="usuario";
//SELECT * FROM usuarios WHERE usuario='joel';
$tsql = ejecSql (
"filename.sql",
Array("usuario"),
Array("joel")
);
function ejecSql($sqlfile,$array_parametros,$array_valores)
{
return mergeSql (getSqlf($sqlfile),$array_parametros, $array_valores);
}
function mergeSql ( $strsql, // se le pasa la string , que es una sentencia sql.
$lista_parametros, // se le pasa en forma de array (lista) los campos #campo
$lista_valores ) // "" "" los valores para sustituir cada #campo con su valor
{
global $config_bd;
$r=count($lista_parametros);
if ($r==0) return INCORRECTO; //parametros sin valor;
// reemplazar parametros de $lista_parametros por valores de $lista_valores
for ($i=0; $i<$r; $i++)
$strsql = str_replace( "#".$lista_parametros[$i], $lista_valores[$i], $strsql );
// comprobar que todo parametro fue reemplazado
if (strpos($strsql,"#")) return -1; //INCORRECTO // faltaron parametros por reemplazar
// reemplazar marcas de configuracion segun $config_bd
reset ($config_bd);
while (list ($idconfig,$valueconfig) = each ($config_bd))
$strsql = str_replace( "&".$idconfig, $valueconfig, $strsql );
return $strsql;
}
function getSqlf( $strfilename )
{
return $strfile = getfile($strfilename);
}
=========
Cualquier aportación , modificación o mejora será bienvenida.
Por otro lado si quieres participar en el desarrollo de portales con mas programadores freelancer no dudes en ponerte en contacto.
[email protected]
Saludos,