Foros del Web » Programando para Internet » PHP »

Insertar varios registros a la vez

Estas en el tema de Insertar varios registros a la vez en el foro de PHP en Foros del Web. Buenas, Quiero agregar varios registros en la misma tabla de golpe: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $sql = "INSERT INTO sectores (nombres,lat,lon,nombrez,fechas) VALUES (" ...
  #1 (permalink)  
Antiguo 25/09/2012, 07:12
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 15 años
Puntos: 3
Insertar varios registros a la vez

Buenas,

Quiero agregar varios registros en la misma tabla de golpe:

Código PHP:
Ver original
  1. $sql ="INSERT INTO sectores (nombres,lat,lon,nombrez,fechas) VALUES (".$nombres."),(".$lat."),(".$lon."),(".$nombrez."),(".$fecha.")";

Donde por ejemplo $nombres es igual a un array pasado por implode, separado por comas.

El echo de $sql es:

INSERT INTO sectores (nombres,lat,lon,nombrez,fechas) VALUES (ONEEE, TWOOO, TREEEE),(41.57, 41.54, 41.53),(1.8, 1.9166486567, 1.857),(yepale3,yepale3,yepale3),(2012-09-25,2012-09-25,2012-09-25)


Pero me da el siguiente error:

Unknown column 'ONEEE' in 'field list'.

No entiendo naaaaadaaaa...
  #2 (permalink)  
Antiguo 25/09/2012, 07:28
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Insertar varios registros a la vez

recuerda que toda cadena pasada al parser SQL debe ser encerrada entre comiilas, de forma de no confundir el interprete.

consulte un manual de SQL, debe quedar:

VALUES ('ONEEE', 'TWOOO', 'TREEEE')
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 25/09/2012, 08:00
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 15 años
Puntos: 3
Respuesta: Insertar varios registros a la vez

GRacias maycola,

Pero me sigue dando error, ahora es el siguiente:

Column count doesn't match value count at row 1

Dicen que sale cuando el numero de valores no coincide. Pero no e mi caso.

Ahora la consulta queda asi:

INSERT INTO sectores (nombres,lat,lon,nombrez,fechas) VALUES ('ONEEE','TWOOO','TREEEE'),(41.5760,41.547,41.533) ,(1.805,1.91664,1.857),('yepale3','yepale3','yepal e3'),(2012-09-25,2012-09-25,2012-09-25)


nombres, es varchar
lat float
lon float
nombrez varchar
fechas date
  #4 (permalink)  
Antiguo 25/09/2012, 08:06
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Insertar varios registros a la vez

¿seguro que no es tu caso?, porque yo veo:

(nombres,lat,lon,nombrez,fechas) 5 columnas y:
('ONEEE','TWOOO','TREEEE') 3 columnas

5 != 3

obviamente han de ser iguales, así algunos esperen NULL, en tal caso, debes de declararlo explícitamente:

('ONEEE','TWOOO','TREEEE', null, null) o
(null, null, 'ONEEE','TWOOO','TREEEE') o donde sea.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 25/09/2012, 08:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 15 años
Puntos: 3
Respuesta: Insertar varios registros a la vez

Mecaondiez :)

Haber, nunca hice un insert de varias filas, pero mirando creo que ya se donde esta mi error:

ESTO:

sql = INSERT INTO sectores (nombres,lat,lon,nombrez,fechas) VALUES ('ONEEE','TWOOO','TREEEE'),(41.5760,41.547,41.533) ,(1.805,1.91664,1.857),('yepale3','yepale3','yepal e3'),(2012-09-25,2012-09-25,2012-09-25)

DEBERIA SER ESTO:

sql = INSERT INTO sectores (nombres,lat,lon,nombrez,fechas) VALUES ('ONEEE','41.5760','1.805','yepale3',2012-09-25),

y asi 5 veces...

Pensaba que debia darle montarlo de la otra manera.


Voy a probar, pero va a ser que sera esto :) GRACIAS
  #6 (permalink)  
Antiguo 25/09/2012, 08:26
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Insertar varios registros a la vez

ahh, estabas pasándolo al revez, como en un update , no, se supone que cada () representa la fila completa
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: registro, registros, sql, tabla, vez
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 10:48.