Foros del Web » Programando para Internet » PHP »

MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY

Estas en el tema de MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY en el foro de PHP en Foros del Web. Hola colegas, buen dia, me surge otra duda, tengo un query en Mysqli del cual necesito guardar los resultados obtenidos (Varios) en session, el detalle ...
  #1 (permalink)  
Antiguo 25/02/2013, 17:29
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 7 meses
Puntos: 6
Pregunta MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY

Hola colegas, buen dia, me surge otra duda, tengo un query en Mysqli del cual necesito guardar los resultados obtenidos (Varios) en session, el detalle es que no se como hacer esto, hasta el momento solo he guardado valores unicos en sesion sacados de una consulta, ya que dichas querys estan diseñadas para que solo me arrojen un 'match', en cambio esta nueva consulta puede arrojarme desde 1 hasta 4 rows... solo estoy solicitando 1 columna....y necesito guardar esos valores en $_SESSION para poder ocuparlos mas adelante en una funcion PHP inarray o algo asi. Les comento, mi consulta es una prepared_statement, esto para evitar algo del SQL Inyection... les dejo mi codigo acontinuacion, por lo pronto solo queria imprimir el array para probar el metodo de que se guardara en un array pero no me funciona me envia este arror asi tal como esta mi codigo en estos momentos....
Código PHP:
Ver original
  1. ( ! ) SCREAM: Error suppression ignored for
  2. ( ! ) Notice: Trying to get property of non-object in C:\wamp\www\test\PHP-MySQL\Mysqli\mysql_result_fetch_array.php on line 26
  3. Call Stack
  4. #   Time    Memory  Function    Location
  5. 1   0.0005  373248  {main}( )   ..\mysql_result_fetch_array.php:0
  6. notFound

Aqui mi código.. :
Código PHP:
Ver original
  1. <?php session_start();
  2. //conexion a bdd
  3. $host="localhost";
  4.     $userbdd="root";
  5.     $pass="";
  6.     $schema="telmexge";
  7.     $mysqli = new mysqli($host,$userbdd,$pass,$schema);
  8.     if (mysqli_connect_errno()) {
  9.         printf("Fallo la conexion a la base de datos: ", mysqli_connect_error());
  10.     }
  11. //Hacemos query
  12. $id_user=1;
  13. $query="SELECT id_rol  FROM  user_rol WHERE id_user=?";
  14.     if ($sentencia = $mysqli->prepare($query)) {
  15.             //ENVIAMOS LOS PARAMETROS
  16.             $sentencia->bind_param('i', $id);
  17.                 //ESCAPAMOS
  18.                 $id= $mysqli->real_escape_string($id_user);
  19.             /* ejecutar la sentencia */
  20.             $sentencia->execute();
  21.                 if ($sentencia->errno) {
  22.                   echo "FAILURE!!! " . $sentencia->error();
  23.                 }
  24.             //RESULTADO EN ARRAY ASOCIATIVO
  25.             $result = $sentencia->fetch();
  26.             if($result->num_rows <1)
  27.             {
  28.             echo "notFound";
  29.             }else {
  30. //EN ESTA PARTE NECESITO EN LUGAR DEL PRINT GUARDAR EN SESSION TODAS //LAS FILAS HAYADAS.
  31.                 print_R($result);
  32.             }
  33.             $sentencia->close();
  34.         }//end if prepare
  35.  
  36.  ?>

Les comento mi query me arroja los sig resultados:
id_rol
====
1
2
3
====


Saldos!!

Última edición por art_rockerd; 25/02/2013 a las 17:30 Razón: add info
  #2 (permalink)  
Antiguo 25/02/2013, 18:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY

Itera tus resultados y ve agregándolos a un array, finalmente lo que debes guardar es ese array.

Las variables de sesión permiten guardar también este tipo de consultas, así que no deberías tener ningún problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/02/2013, 20:19
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 7 meses
Puntos: 6
Respuesta: MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY

Cita:
Iniciado por pateketrueke Ver Mensaje
Itera tus resultados y ve agregándolos a un array, finalmente lo que debes guardar es ese array.

Las variables de sesión permiten guardar también este tipo de consultas, así que no deberías tener ningún problema.
Ah de hecho es lo que quiero, pero yo erroneamente pensaba que ya el resultado de mysqli se guardaba por default en un array... <.< y que eso lo podia guardar en una variable de sesion, entonces aun asi necesito hacer un while? y dentro de ese while...amm como voy guardando elementos en un array..

Muchas gracias, mientras seguire buscando. Saludos!!!
  #4 (permalink)  
Antiguo 26/02/2013, 09:07
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 6 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.
  #5 (permalink)  
Antiguo 26/02/2013, 16:54
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 7 meses
Puntos: 6
Pregunta Respuesta: MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY

Cita:
Iniciado por jonni09lo Ver Mensaje
Código PHP:
Ver original
  1. $_SESSION['user']['roles'] = $roles; //guardamos el array en una sesion
  2.         var_export($_SESSION['user']['roles']); //verificamos que los valores sean los correctos output array(1,2,3)

info de store_result aqui

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

Saludos
Hola amigo, ya lo probe, solo que no entiendo esta parte:
Código HTML:
Ver original
  1. $_SESSION['user']['roles'] = $roles; //guardamos el array en una sesion
  2.         var_export($_SESSION['user']['roles']); //verificamos que los valores sean los correctos output array(1,2,3)
por que $_SESSION['user']['roles']? que significa el ['user']
lo que me arroja es esto:
array ( 0 => 1, 1 => 2, )
asi tal cual.. pero no entendi bien :s

Muchas Gracias, saludos!
  #6 (permalink)  
Antiguo 26/02/2013, 17:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY

Cita:
Iniciado por art_rockerd Ver Mensaje
por que $_SESSION['user']['roles']? que significa el ['user']
La variable $_SESSION es en si un arreglo, y como tal puedes guardar en ella tantas dimensiones como necesites.

En el ejemplo se usa el índice "user" para tener mas organizados tus datos, pero de igual forma pudiste llamarle como quiera o usar una sola dimensión, etc.

Te sugiero leer el manual acerca de arrays, ya que es un concepto bastante básico que no deberías pasar desapercibido.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 27/02/2013, 16:52
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 7 meses
Puntos: 6
Respuesta: MYSQLi-Guardar en $_SESSION resultado de varias filas de QUERY

Cita:
Iniciado por pateketrueke Ver Mensaje
La variable $_SESSION es en si un arreglo, y como tal puedes guardar en ella tantas dimensiones como necesites.

En el ejemplo se usa el índice "user" para tener mas organizados tus datos, pero de igual forma pudiste llamarle como quiera o usar una sola dimensión, etc.

Te sugiero leer el manual acerca de arrays, ya que es un concepto bastante básico que no deberías pasar desapercibido.
Eso trato, pero honestamente no los entiendo... se me complica mucho ese tema
por eso trato de analizar los pedazos de códigos que encuentro para hayarles la lógica... Muchas gracias. Saludos!
:/

Etiquetas: fetch, mysqli, result, statement
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:38.