Foros del Web » Programando para Internet » PHP »

Insert masivo de registros a una BD

Estas en el tema de Insert masivo de registros a una BD en el foro de PHP en Foros del Web. Hola amigos, estoy intentando hacer un insert masivo a mysql pero solo me inserta 255 filas.... El caso es que no me tira ningun tipo ...
  #1 (permalink)  
Antiguo 21/05/2015, 12:24
 
Fecha de Ingreso: enero-2002
Mensajes: 73
Antigüedad: 17 años, 10 meses
Puntos: 0
Insert masivo de registros a una BD

Hola amigos, estoy intentando hacer un insert masivo a mysql pero solo me inserta 255 filas.... El caso es que no me tira ningun tipo de error. Aver si me podeis echar un cable, gracias!!


$xml = simplexml_load_file("http://file.xml");
if (!$xml) {
echo "No se pudo abrir el archivo XML.";
exit;
}

$count=0;
foreach ($xml->product as $product) {
//Asignamos variables
$titulo = $product->name;
$titulo = str_replace("?","€",$titulo);
$link = $product->deepLink;
$precioantes = $product->oldPrice;
$preciooferta = $product->price;
$descripcion = $product->description;
$descripcion = str_replace("?","€",$descripcion);
$condiciones = $product->terms;
$categoria = $product->merchantCategoryPath;
$imgmedia = $product->mediumImage;
$imggrande = $product->largeImage;
$localidad = $product->extra1;
$fecha = date("Y-m-d");
$hora = date("Y-m-d H:i:s");
$iniciopromo = $product->lastModified;
$finpromo = $product->extra2;
if ($localidad == "oferta-nacional") {

$dbconn->query("INSERT INTO ofertas(titulo,link,precioantes,preciooferta,descr ipcion,condiciones,categoria,imgmedia,imggrande,lo calidad,fecha,hora,iniciopromo,finpromo) VALUES ('$titulo','$link','$precioantes','$preciooferta', '$descripcion','$condiciones','$categoria','$imgme dia','$imggrande','$localidad','$fecha','$hora','$ iniciopromo','$finpromo')") ;

$count++;
}
}
__________________
Información Turística sobre Merida --> MeridaEterna.com
  #2 (permalink)  
Antiguo 21/05/2015, 12:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Insert masivo de registros a una BD

Cita:
solo me inserta 255 filas
Es muy llamativo que sea un numero tán, pero tan característico... Es el equivalente al rango máximo de representación de 2 Bytes.

Seré curioso, pero ¿esa tabla donde insertas, tiene un ID autoincremental declarado como TINYINT UNSIGNED?
__________________
¿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/05/2015, 13:18
 
Fecha de Ingreso: enero-2002
Mensajes: 73
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Insert masivo de registros a una BD

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Es muy llamativo que sea un numero tán, pero tan característico... Es el equivalente al rango máximo de representación de 2 Bytes.

Seré curioso, pero ¿esa tabla donde insertas, tiene un ID autoincremental declarado como TINYINT UNSIGNED?
Gracias por responder!! Así es.... Se te ocurre alguna posible solución??
__________________
Información Turística sobre Merida --> MeridaEterna.com
  #4 (permalink)  
Antiguo 21/05/2015, 14:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Insert masivo de registros a una BD

Cita:
Se te ocurre alguna posible solución??
Pues ESE es precisament ele error...

Un TINYINT UNSIGNED sólo puede tener valores entre 0 y 255, por lo que cualquier otro valro no puede ser insertado. Lo que te esá sucediendo es que el AI genera un número mayor a eso, y como es imposible insertarlo, sólo puede intentar crear otro 255, y como ya existe una PK 255... no inserta nada.

Es un error MUY GRAVE crear IDs con un rango tan pequeño en una tabla que va a aamacenar más de 255 registros.
Tendrás que modificar la tabla y asignarle un INT UNSIGNED, o bien un BIGINT UNSIGNED. No hay otra solución.

Para eso deberás hacer un ALTER TABLE en MySQL, pero el problema inciial es saber si esa PK está siendo usada como FK en otra tabla. Si lo es, la cosa se complica.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/05/2015, 14:27
 
Fecha de Ingreso: enero-2002
Mensajes: 73
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Insert masivo de registros a una BD

Gracias por tu pronta respuesta gnzsoloyo, gracias y mil perdones por mi ignorancia xD
__________________
Información Turística sobre Merida --> MeridaEterna.com
  #6 (permalink)  
Antiguo 21/05/2015, 14:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Insert masivo de registros a una BD

Son errores comunes al principio.... No hay problema.

Son bastante usuales cuando te guias por tutoriales que a veces no tienen en cuenta esos detalles.
__________________
¿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: bd, fecha, insert, masivo, mysql, registros, variable
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 04:32.