Foros del Web » Programando para Internet » PHP »

Tablas temporales no disponibles

Estas en el tema de Tablas temporales no disponibles en el foro de PHP en Foros del Web. Hola, Soy nuevo en programación y posiblemente esté haciendo una pregunta básica para muchos, pero he buscado en todas partes y no consigo respuesta. Mi ...
  #1 (permalink)  
Antiguo 01/07/2014, 05:29
 
Fecha de Ingreso: julio-2014
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta Tablas temporales no disponibles

Hola,

Soy nuevo en programación y posiblemente esté haciendo una pregunta básica para muchos, pero he buscado en todas partes y no consigo respuesta.

Mi duda es relativa a las tablas temporales en MySQL. Estoy trabajando con PHP.

Quiero crear una tabla temporal a partir de una consulta a una tabla permanente con datos que provienen de un formulario desde la página anterior ($_POST):

Código PHP:
$consulta "CREATE TEMPORARY TABLE Tienda_tmp SELECT * FROM Tienda WHERE (IdTienda LIKE '%$_POST[IdTienda]%' AND NombreTienda LIKE '%$_POST[NombreTienda]%')"
Luego quiero trabajar sobre la tabla temporal para mostrar los elementos que me interesan y así poder ordenarlos por cualquiera de sus columnas. Así que hago una consulta a la tabla temporal en el mismo script a continuación de la creación de la tabla:

Código PHP:
$consulta2 "SELECT * FROM Tienda_tmp ORDER BY $orden"
Hasta aquí todo funciona perfectamente. Consigo mostrar al usuario una tabla con $consulta2 con los valores que ha seleccionado.

El problema viene cuando realizo realizo otra consulta sobre la tabla (otra $consulta2) para ordenar según $orden, simplemente no puede realizar la consulta porque la tabla no existe.

En cada fichero *.php tengo al inicio:

Código PHP:
session_start(); 
Había leido que las tablas temporales existen mientras se mantenga abierta la sesión. Mientras no la cierre, la tabla debería estar disponible.

A lo mejor tengo un problema de concepto y por eso no veo por qué la tabla no está disponible, o a lo mejor, debería utilizar otro procedimiento para conseguir lo que pretendo.

Muchas gracias.

Daniel.
  #2 (permalink)  
Antiguo 01/07/2014, 06:18
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Tablas temporales no disponibles

Entiendo que tienes razon....... pero sino te funciona otra opcion seria serializar la tabla y guardarla como variable de session, luego de utilizarla simplemente haces un unset() dentro de $_SESSION

Código PHP:
Ver original
  1. ..
  2. consulta SQL
  3. ...
  4. $_SESSION['tmp_table'] =  serialize( resultado de la consulta )


luego

Código PHP:
Ver original
  1.  
  2. $tmp_table = unserialize($_SESSION['tmp_table']);
  3. ..
  4. .. haces lo que necesites ..
  5. ...
  6. unset ($_SESSION['tmp_table']);
__________________
Salu2!
  #3 (permalink)  
Antiguo 01/07/2014, 17:35
 
Fecha de Ingreso: julio-2014
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Tablas temporales no disponibles

Hola Italico76,

Muchas gracias por la información. Aunque no he conseguido hacer funcionar el "serialize" sí que me ha sido de ayuda tus comentarios.

Finalmente lo que he realizado ha sido un array multidimensional de la consulta SELECT y lo he puesto en una variable de sesión, como me has indicado. Luego en el otro documento *.php lo recupero y lo ordeno como quiera. Puedo hacerlo tantas veces como quiera, ya que existe en la variable hasta destruirla o cerrar sesión.

Aún así, me gustaría saber por qué no tengo disponible la tabla temporal. Es posible que la pueda necesitar más adelante.

Un saludos.

Daniel.
  #4 (permalink)  
Antiguo 01/07/2014, 18:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Tablas temporales no disponibles

Daniel

El serialize() te sirve para convertir una estructura de datos como un array o un objeto en un string y poder asi almancenarlo en una base de datos (como MySQL que no admite "vectores") y es util para incluir objetos como variables de session (que no admite tipos mas complejos que arreglos) *

Si aca no hay quien sepa del tema de las tablas temporales como para ayudarte podrian MOVER EL TEMA a BASE DE DATOS (por favor)


EDIT: Sin embargo en PHP aun los objetos se pueden serializar automaticamente
__________________
Salu2!

Última edición por Italico76; 02/07/2014 a las 05:57

Etiquetas: mysql, tabla, table, temporal
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 16:50.