Ver Mensaje Individual
  #9 (permalink)  
Antiguo 16/07/2012, 20:50
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: como insertar registros en masa

Cita:
no entiendo o mas bien no se como llegar a lo que me dices
Veamos si esto te puede servir de guía (encontrado tras 35 segundos de búsquedas en en Google):
Código PHP:
Ver original
  1. <?php
  2. $multi = array(
  3.                 array("First", "Content"), //Array for a row of fields
  4.                 array("Second", "Something"),
  5.                 array("Third", "Some Text"),
  6.                 array("Another", "Another Content")
  7.             );
  8. $new = array();
  9. foreach($multi as $key=>$value) {
  10.     $new[] = "'".implode("', '", $value)."'";
  11. }
  12. $query = "(".implode("), (", $new).")";
  13. mysql_query("INSERT INTO duplicate (title, body) VALUES ".$query.";");
  14. echo "Inserted successfully";
  15. ?>


O bien esta otra forma (40 segundos después):
Código PHP:
Ver original
  1. $insertOrUpdateStatement1 = "INSERT INTO table (col1, col2) VALUES ";
  2. $insertOrUpdateStatement2 = "ON DUPLICATE KEY UPDATE ";
  3. $counter = 0;
  4. $queries = array();
  5.  
  6. foreach($itemList as $key => $item){
  7.     $val1 = escape($item->col1); //escape is a function that will make
  8.                                  //the input safe from SQL injection.
  9.                                  //Depends on how are you accessing the DB
  10.  
  11.     $val2 = escape($item->col2);
  12.  
  13.     $queries[] = $insertOrUpdateStatement1.
  14.     "('$val1','$val2')".$insertOrUpdateStatement2.
  15.     "col1 = '$val1', col2 = '$val2'";
  16.  
  17.     $counter++;
  18.  
  19.     if ($counter % 100 == 0) {
  20.         executeQueries($queries);
  21.         $queries = array();
  22.         $counter = 0;
  23.     }
  24. }
  25.  
  26. //executeQueries toma el array y envía una sola query multiple:
  27.  
  28. function executeQueries($queries) {
  29.    $data = "";
  30.      foreach ($queries as $query) {
  31.         $data.=$query.";\n";
  32.     }
  33.     executeQuery($data);
  34. }

Yo me quedo con la primera, porque es más simple de código, pero cualquier otra forma puede ser usable.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)