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

Insertar array de datos en tabla

Estas en el tema de Insertar array de datos en tabla en el foro de Mysql en Foros del Web. Tengo una base de datos organizada de la siguiente manera: ID - Nombre - Puntos Ya tengo cada nombre con ID, y tengo que actualizar ...
  #1 (permalink)  
Antiguo 26/08/2012, 16:12
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Insertar array de datos en tabla

Tengo una base de datos organizada de la siguiente manera:

ID - Nombre - Puntos


Ya tengo cada nombre con ID, y tengo que actualizar los puntos todos los dias que los saco de un archivo.

Para hacer eso primero obtengo todos los registros y verfico cuantos puntos tiene cada ID, por lo que me queda una lista:

1 - 35
2 - 53
3 - 10
4 - 0

Lo que necesito es agregar los puntos a cada id.

Es correcto hacer un query para cada id con puntaje quedando:

"INSERT INTO enlaces(puntos) VALUES($puntos[0]) WHERE id = $id[0] "

y hacer un query a esa sql sumando el array?

Estoy trabajando con PHP y Mysqli .
  #2 (permalink)  
Antiguo 26/08/2012, 16:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Insertar array de datos en tabla

Cita:
Tengo una base de datos organizada de la siguiente manera:

ID - Nombre - Puntos
Eso no es una BBDD, es una tabla...
Cita:
Para hacer eso primero obtengo todos los registros y verfico cuantos puntos tiene cada ID, por lo que me queda una lista:
Si lo que necesitas es actualizar los puntos que figuran en la tabla para cada ID, entonces lo que corresponde hacer es un UPDATE y no un INSERT.
INSERT correspondería si usases una tabla relacionada con la de los usuarios o lo que sea que represente esa primera, donde guardes una entrada por cada conjunto d epuntos sumados en una sesión de lo que sea que se trate.
En realidad, si los puntos corresponden a partidos, exámenes o sesiones, lo correcto es que cada puntaje adicionado se administre en una tabla separada, la cual debe contener la fecha del partido, sesión o examen. De esa forma puedes determinar cuando y quien obtivo los puntos, en qué sesión y podría definirse también contra quienes fue la cosa.
En otras palabras, da la impresión de que el modelo de datos no está correctamente definido.

Finalmente:
- En el UPDATE se puede usar WHERE, en el INSERT no.
- El INSERT puede ser múltiple, es decir, hacer N inserts en una misma sentencia, en el UPDATE no (a menos que el mismo valor se aplique a todos los que cumplan con el WHERE).
- La construcción de un INSERT multiple se hace en la programación. Sólo te puedo decir que debe hacerse así:
Código MySQL:
Ver original
  1. INSERT INTO tabla VALUES (valores), (valores), (valores), ..., (valores);
donde "..." representa los N grupos que debes crear dinamicamente.
- Cada grupo entre paréntesis debe ser de la misma cantidad de campos y ser los mismos que tiene la tabla, o de lo contrario habrá que indicar cuáles se insertan.
- En el UPDATE sólo puedes hacerlo con un UPDATE por cada valor a actualizar, y tiene el formato:
Código MySQL:
Ver original
  1. UPDATE tabla SET campo = campo + valornuevo
  2. WHERE idtabla = idactualizar;

El cómo se construye esto en PHP es OFF TOPIC de este foro. Lo debes consultar con el Foro de PHP (http://www.forosdelweb.com/f18/)

¿Se entiende?
__________________
¿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, registros, sql, tabla
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:50.