Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/02/2013, 09:07
Avatar de jonni09lo
jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY

Código PHP:
Ver original
  1. //conexion a bdd
  2. $host="localhost";
  3. $userbdd="root";
  4. $pass="";
  5. $schema="telmexge";
  6. $mysqli = new mysqli($host,$userbdd,$pass,$schema);
  7.     printf("Fallo la conexion a la base de datos: ", mysqli_connect_error());
  8. }
  9. //Hacemos query
  10. $id_user=1;
  11. $query="SELECT id_rol  FROM  user_rol WHERE id_user=?";
  12. if ($sentencia = $mysqli->prepare($query)) {
  13.    
  14.     //ESCAPAMOS
  15.     $id= $mysqli->real_escape_string($id_user); //estoy casi seguro que no es necesario ademas esto va antes y lo tenias declarado depues, ya que bind param recibe $id
  16.    
  17.     //ENVIAMOS LOS PARAMETROS
  18.     $sentencia->bind_param('i', $id);
  19.    
  20.     /* ejecutar la sentencia */
  21.     $sentencia->execute();
  22.     if ($sentencia->errno) {
  23.         echo "FAILURE!!! " . $sentencia->error();
  24.     }
  25.     $sentencia->store_result(); //Tuve problemas para hacerlo funcionar local asi que use esto para poder usar num_rows con consultas preparadas
  26. //siguiendo tu cod
  27.     if($sentencia->num_rows < 1){ //la sentencia es la que tiene los num_rows no el resultado
  28.         echo "notFound";
  29.     }else{
  30.         $sentencia->bind_result($id_rol); //como tu consulta solo retorna valores de una sola columna vinculamos las variables del resultado
  31.        
  32.         //EN ESTA PARTE NECESITO EN LUGAR DEL PRINT GUARDAR EN SESSION TODAS //LAS FILAS HAYADAS.
  33.         //print_R($result);
  34.         $roles = array(); //array temporal que tendra los roles del usuario
  35.         //RESULTADO EN ARRAY ASOCIATIVO
  36.         while($result = $sentencia->fetch()){ //declaramos el fetch en el while para poder realizar la iteracion de los arrays
  37.             $roles[] = $id_rol; //guardamos el rol en el array declarado arriba
  38.         }
  39.         $_SESSION['user']['roles'] = $roles; //guardamos el array en una sesion
  40.         var_export($_SESSION['user']['roles']); //verificamos que los valores sean los correctos output array(1,2,3)
  41.     }
  42.     $sentencia->close();
  43. }

info de store_result aqui

Revisalo y compáralo con el que tenias y nos cuentas

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.