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

Consula sobre un INSERT INTO

Estas en el tema de Consula sobre un INSERT INTO en el foro de Mysql en Foros del Web. Hola Amigos !!! Los vuelvo a molestar ya que no logro que me funcione un simple INSERT @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original INSERT INTO ...
  #1 (permalink)  
Antiguo 21/12/2011, 11:39
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 14 años, 1 mes
Puntos: 4
Consula sobre un INSERT INTO

Hola Amigos !!!
Los vuelvo a molestar ya que no logro que me funcione un simple INSERT
Código MySQL:
Ver original
  1. INSERT INTO category (category_id,parent_id,top,column,sort_order,status,date_added,date_modified)VALUES('15','18','0','1','0','1',now(),now()) ON DUPLICATE KEY UPDATE parent_id='15'
y me da este error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'column,sort_order,status,date_added,date_modified )VALUES('15','18','0','1','0','0',' at line 1
si le saco las columnas funciona bien pero bueno , queria saber cual esra el error y que me ayuden por favor a solucionarlo
Saludos y muchas gracias!!!
  #2 (permalink)  
Antiguo 21/12/2011, 11:54
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: Consula sobre un INSERT INTO

Por lo pronto: No uses nombres en inglés para los elementos de las tablas, las tablas o las bases. Es frecuente que al hacerlo termines usando palabras reservadas, que generan errores de sintaxis, como el caso de "column".
Segundo, estás insertando 15 como valor de PK, y le dices que si está duplicad, ponga 15... eso no es razonable. Trata de ver los ejemplos quu están en el manual de referencia de MySQL. Son más explicativos:
Cita:
Si especifica ON DUPLICATE KEY UPDATE, y se inserta un registro que duplicaría un valor en un índice UNIQUE o PRIMARY KEY, se realiza un UPDATE del antiguo registro. Por ejemplo, si la columna a se declara como UNIQUE y contiene el valor 1, los siguientes dos comandos tienen efectos idénticos:

Código MySQL:
Ver original
  1. mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
  2.  
  3. mysql> UPDATE table SET c=c+1 WHERE a=1;
El valor de registros afectados es 1 si el registros se inserta como un nuevo registro y 2 si un valor existente se actualiza.

Nota: Si la columna b es única, el INSERT sería equivalente a este comando UPDATE :

Código MySQL:
Ver original
  1. mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
Si a=1 OR b=2 se cumple para varios registros, sólo un registro se actualiza. En general, debería intentar evitar usar una cláusula ON DUPLICATE KEY en tablas con claves únicas múltiples.
__________________
¿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 21/12/2011, 12:02
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Consula sobre un INSERT INTO

Hola gnzsoloyo
gracias por contestar
lo que pasa que la base de datos es de un carrito de compras y yo no la hice,
Cita:
estás insertando 15 como valor de PK, y le dices que si está duplicad, ponga 15.
lo que pasa que en esa parte tenia codigo php y no lo queria poner en el foro de mysql
por eso lo reemplace y puse cualquier cosa y crei que con el error que me daba , alguien se iba a dar cuenta cual era el problema
pongo el codigo tal cual lo tengo
Código MySQL:
Ver original
  1. INSERT INTO category (category_id,image,parent_id,top,column,sort_order,status,date_added,date_modified)VALUES('".$fila5['cat_id']."','','".$fila5['categoria_asoc']."','0','1','0','1',now(),now()) ON DUPLICATE KEY UPDATE parent_id='".$fila5['categoria_asoc']."' "
si le saco las columnas funciona bien... osea que por logica el error lo tengo aca
(category_id,image,parent_id,top,column,sort_order ,status,date_added,date_modified)
pero no se cual es.
Saludos y muchas gracias
  #4 (permalink)  
Antiguo 21/12/2011, 12:08
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Consula sobre un INSERT INTO

AAAA ya entendi, el error me lo esta marcando el codigo MYSQL que esta arriba
pero como lo puedo solucionar?
saco todas las columnas en el INSERT?
  #5 (permalink)  
Antiguo 21/12/2011, 12:12
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: Consula sobre un INSERT INTO

Si la cantidad de datos a ingresar, y el orden de los mismos es exactamente igual al de la tabla, no es necesario indicar las columnas.
Sólo es necesario hacerlo si:
1) El orden de los datos no coincide con el orden de las columnas donde se asignarán.
2) No se ingresan todas las columnas.
3) Se quiere omitir el ID por ser un autoincremental, por lo cual es innecesario ponerlo (idem anerior).

En cuanto a poner las columnas, si entre ellas hay palabras reservadas (column por caso), lo que se puede hacer es encerrar los nombres entre acentos inversos (`column`). Eso hará que no la tome como palabra sino como objeto de base de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 21/12/2011, 12:14
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Consula sobre un INSERT INTO

Mejor explicado imposible
sos un maestro
Saludos y muchas gracias por ayudar a este novato
  #7 (permalink)  
Antiguo 21/12/2011, 12:17
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: Consula sobre un INSERT INTO

Me alegro que sirviera.

__________________
¿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: consula, insert, 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 13:17.