Estoy desarrollando una clase database para conectarme a mysql, y me gustaría que las consultas se lanzasen con plantillas de la consulta por un lado y parámetros por otro, que he leido por ahí, que es interesante por temas de seguridad. Tengo la parte echa que realiza la consulta:
Código PHP:
public function lanzar_query($query,$tipo,$parametros){
$this->stmt = mysqli_prepare($this->link,$query);
$args = array_merge(array($this->stmt), array($tipo), $parametros);
call_user_func_array('mysqli_stmt_bind_param',$args);
mysqli_stmt_execute($this->stmt);
mysqli_stmt_store_result($this->stmt);
}
Donde un ejemplo de los datos con los que se invoca a esta función son estos:
Código PHP:
$query = "SELECT idUsuario, pass, DNI, nombre, apellidos, idOcupacion, profesor FROM M_USUARIOS WHERE USER = ? and PASS = ?";
$tipo ='ss';
$parametros = array();
$parametros[]="admin";
$parametros[]=md5('admin');
La función debería de ser algo así, (ya se que esta probablemente tiene cosas mal, porque llevo mil cambios, y me quedado con la ultima)
Código PHP:
public function query2array($params){
$row_array=array();
$resul_array=array();
$args=array_merge(array($this->stmt),$params);
call_user_func_array('mysqli_stmt_bind_result',$args);
while ($row = mysqli_stmt_fetch($this->stmt)) {
foreach($params as $key => $value)
$row_array[$key]=$value;
$resul_array[]=$row_array;
}
return $resul_array;
}
Código PHP:
$parametros = Array();
$parametros ['idUsuario']="";
$parametros ["pass"]="";
$parametros ["DNI"]="";
$parametros ["nombre"]="";
$parametros ["apellidos"]="";
$parametros ["idOcupacion"]="";
$parametros ["profesor"]="";
Espero haberme explicado bien.
Un saludo,