Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Fallo en la query

Estas en el tema de Fallo en la query en el foro de Mysql en Foros del Web. Buenas estoy intentando hacer un UPDATE de una de mis tablas que se llama mesas, contiene un campo id_mesa status de tipo ENUM con las ...
  #1 (permalink)  
Antiguo 06/07/2013, 06:24
 
Fecha de Ingreso: julio-2013
Ubicación: Madrid
Mensajes: 13
Antigüedad: 11 años, 4 meses
Puntos: 0
Fallo en la query

Buenas estoy intentando hacer un UPDATE de una de mis tablas que se llama mesas, contiene un campo id_mesa status de tipo ENUM con las opciones disponible y ocupado y otro campo de capacidad,

Quiero haver un UPDATE del campo status.

La query que utilizo es esta:
Código MySQL:
Ver original
  1. UPDATE FROM mesas SET status = 'ocupada' WHERE id_mesa = 'mesa_1';

Y en PHP la tengo escrita de esta forma:
Código MySQL:
Ver original
  1. UPDATE FROM mesas SET status = 'ocupada' WHERE id_mesa = '$id_mesa';

Cita:
Editado: Código de programación no permitido en Foros de Bases de Datos.
el $id_mesa lo recibo por REQUEST así que ese no es el fallo.
Alguien podría ayudarme. Muchas Gracias.

Última edición por gnzsoloyo; 06/07/2013 a las 06:46
  #2 (permalink)  
Antiguo 06/07/2013, 06:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Fallo en la query

Cita:
el $id_mesa lo recibo por REQUEST así que ese no es el fallo.
Desde el mismo momento en que esa variable proviene de un programa, puede contener datos erróneos.
Siempre.

En cuanto al uso del ENUM, hay que verificar lo que la sentencia está recibiendo. Bien podría estar entrando algo incorrecto...

Por otro lado, hay dos cosas a considerar:
- No nos estás diciendo qué problema te causa el UPDATE. Nada en tu post lo sugiere.

- Estás usando una palabra reservada como nombre de columna (STATUS). Eso puede provocar errores de ejecución o de sintaxis indetectables. Nunca uses palabras simples en inglés (son propensas a este tipo de problemas), o ponlas con prefijos.

- No estoy completamente seguro de que estés usando correctamente el ENUM. Si una columna sólo puede tener dos estados, no tiene ningún sentido usar ENUM cuando podrías usar BIT, BOOL o incluso TINYINT. Pero eso es una decisión de diseño.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/07/2013, 07:31
 
Fecha de Ingreso: julio-2013
Ubicación: Madrid
Mensajes: 13
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Fallo en la query

Gracias voy modificar el nombre de la columna y el tipo de dato que recibe a ver si con esas lo soluciono.
Ahora te comento.
  #4 (permalink)  
Antiguo 06/07/2013, 07:45
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Fallo en la query

Cita:
- No estoy completamente seguro de que estés usando correctamente el ENUM. Si una columna sólo puede tener dos estados, no tiene ningún sentido usar ENUM cuando podrías usar BIT, BOOL o incluso TINYINT. Pero eso es una decisión de diseño.
Es muy valido lo que aclara el usuario gnzsoloyo, pero en mi caso particular, he trabajado con ENUM, y te puedo asegurar que estas haciendo bien.

Lo que no me queda claro es como definiste, en la columna ENUM, las variables, porque segun tu post, dices que definiste como disponible y ocupado, pero cuando asignas la variable ENUM pones "ocupada":

Cita:
... contiene un campo id_mesa status de tipo ENUM con las opciones disponible y ocupado y otro campo ...
Código MySQL:
Ver original
  1. UPDATE FROM mesas SET status = 'ocupada' WHERE id_mesa = 'mesa_1';

Yo creo que tu problema se resulve con que simplemente, en ves de ocupada, digas ocupado, como lo tenes definido, y listo. O la otra opcion, es que para las columnas de tipo ENUM, puedes usar los indices de tu arreglo de opciones, es decir, puedes directamente asignar un 2 ara el estado de ocupado, y eso te dara la opcion que deseas, asi de esta manera:

Código MySQL:
Ver original
  1. UPDATE FROM mesas SET status = 2 WHERE id_mesa = 'mesa_1';

Recuerda que para los tipo de datos ENUM, puedes trabajar con las opciones que has declarado, pero tienes que menionar exactamente el texto, como realice la aclaracion mas arriba, o de lo contrario, trabajar con los indices, y considerar todas las opciones como un arreglo.

Espero te sirva.
Saludos.
  #5 (permalink)  
Antiguo 06/07/2013, 07:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Fallo en la query

No me quedó claro al final cuál es el problema que quieres solucionar.

¿Devuelve algún error?
¿No actualiza?

¿Cuál es exactamente el problema que tienes?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php, querystring, sql
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 23:24.