Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/02/2008, 11:46
Merodeador
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 17 años, 2 meses
Puntos: 0
STMT en MYSQL

Buenas, ya estoy por aquí otra vez.

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'); 
El problema lo tengo al intentar recuperar los datos, que tengo entendido que solo lo puedo hacer mediante las funciones mysqli_stmt_bind_result, para fijar las variables donde se van a almacenar los resultados, y mysqli_stmt_fetch, para obtener una fila, y lo quiero convertir en una matriz asociativa.

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;
 } 
Como he dicho antes, esta última función es solo para que os hagais una idea de lo que quiero, $params en teoría es un array del tipo

Código PHP:
  $parametros = Array();
  
$parametros ['idUsuario']="";
  
$parametros ["pass"]="";
  
$parametros ["DNI"]="";
  
$parametros ["nombre"]="";
  
$parametros ["apellidos"]="";
  
$parametros ["idOcupacion"]="";
  
$parametros ["profesor"]=""
La idea es hacer una función que valga para cualquier SELECT.

Espero haberme explicado bien.

Un saludo,