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

Problema con consulta UPDATE

Estas en el tema de Problema con consulta UPDATE en el foro de Mysql en Foros del Web. Hola chicos. El siguiente código me da error y no sé por qué: Código PHP: //Cogemos la id_producto del posteo $id  =  $_POST [ 'id_producto' ]; //asignamos el resto de variables $nombre  =  ...
  #1 (permalink)  
Antiguo 27/04/2010, 11:30
Avatar de mahuro  
Fecha de Ingreso: abril-2006
Mensajes: 15
Antigüedad: 18 años
Puntos: 0
Problema con consulta UPDATE

Hola chicos.

El siguiente código me da error y no sé por qué:

Código PHP:
//Cogemos la id_producto del posteo
$id $_POST['id_producto'];

//asignamos el resto de variables
$nombre $_POST['nombre'];
$precio $_POST['precio'];
$id_categoria $_POST['id_categoria'];
$id_tipo $_POST['id_tipo'];
$es_menu $_POST['es_menu'];
$es_especialidad $_POST['es_especialidad'];
$es_sugerencia $_POST['es_sugerencia'];

echo (
'id_producto ($id): '.$id.'<br />'); //Depuración

//Definimos la query
$modificar_datos "UPDATE productos
SET
id_producto = '$id'
nombre = '$nombre',
precio = '$precio',
id_categoria = '$id_categoria',
id_tipo = '$id_tipo',
es_menu = '$es_menu',
es_especialidad = '$es_especialidad',
es_sugerencia = '$es_sugerencia',
WHERE
id_producto = '$id'"

Me dice que:
Código:
d_producto ($id): 9
Error modificando datosYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'nombre = 'Sopa de picadillo', precio = '3.00', id_categoria = '1', id_tipo = '1'' at line 4
Como veis, parece que las variables las coge bien pero no sé que es lo que esta mal en la consulta. he probado a meterlo todo con comillas dobles y las variables con simples y al reves y a quitarle las comillas a las variables del query, pero me sigue dando el pismo fallo.

Código:
CREATE TABLE `productos` (
  `id_producto` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `id_tipo` int(11) unsigned NOT NULL,
  `id_categoria` int(11) unsigned NOT NULL,
  `nombre` tinytext CHARACTER SET utf8 NOT NULL,
  `precio` decimal(10,2) NOT NULL,
  `es_menu` text CHARACTER SET utf8,
  `es_especialidad` text CHARACTER SET utf8,
  `es_sugerencia` text CHARACTER SET utf8,
  PRIMARY KEY (`id_producto`),
  KEY `id_tipo` (`id_tipo`),
  KEY `id_categoria` (`id_categoria`),
  CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`id_tipo`) REFERENCES `tipos` (`id_tipo`),
  CONSTRAINT `productos_ibfk_2` FOREIGN KEY (`id_categoria`) REFERENCES `categorias` (`id_categoria`)
) ENGINE=InnoDB AUTO_INCREMENT=89 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci
A ver si un ojo experto ve mi garrapata porque yo no tengo co**nes de hallarla.

Agradecido zus quedo amigos.

Última edición por mahuro; 27/04/2010 a las 11:38 Razón: Edito porque no había metido los datos de la tabla :P
  #2 (permalink)  
Antiguo 27/04/2010, 17:16
Avatar de Yedi  
Fecha de Ingreso: junio-2006
Ubicación: México
Mensajes: 159
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: Problema con consulta UPDATE

mm pregunta para que quieres asignarle tu el id del producto si la con la opcion de autoincrement ya lo tienes??, por q no dejas ese campo en blanco y solo actualizas los demas
  #3 (permalink)  
Antiguo 28/04/2010, 00:43
Avatar de mahuro  
Fecha de Ingreso: abril-2006
Mensajes: 15
Antigüedad: 18 años
Puntos: 0
Respuesta: Problema con consulta UPDATE

Pues porque después de 14 horas peleándome con el sistema no me había puesto a "comprender" el código. :P

Efectivamente, el id del principio era el que me generaba el error, ya al ser auto incremental no me dejaba sobreescribirlo. También faltaba una coma detrás del primer $id que, en cuanto la puse, me empezó a guiar acerca del problema.

Así que la cosa, quedando así, funciona perfectamente:
Código:
//Definimos la query
$modificar_datos = "UPDATE productos
SET
nombre = '$nombre',
precio = '$precio',
id_categoria = '$id_categoria',
id_tipo = '$id_tipo',
es_menu = '$es_menu',
es_especialidad = '$es_especialidad',
es_sugerencia = '$es_sugerencia',
WHERE
id_producto = '$id'";
Gracias de nuevo!!

Etiquetas: update
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 08:18.