Christoph: einzelnen Query senden

Beitrag lesen

Moin.

Vermutlich geht die meiste Zeit dadurch verloren, dass du bei jedem Schleifendurchlauf einen eigenen mysql_query() absetzt. Man könnte auch erst alle Werte in einem Array sammeln und die Datenbank auf einen Schlag aktualisieren.

Beispiel:

  
$values = array();  
$log = array();  
  
foreach(file($source, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {  
 $data = explode('|', $line);  
  
 if(count($data) != 4) {  
  $log[] = "illegal record $line";  
  continue;  
 }  
  
 // jede mail-Adresse wird maximal einmal hinzugefügt!  
 $values[strtolower($data[3])] = "('".  
  mysql_real_escape_string($data[0])."', '".  
  mysql_real_escape_string(str_replace(',', '', $data[1]))."', '".  
  mysql_real_escape_string(str_replace(',', '', $data[2]))."', '".  
  mysql_real_escape_string($data[3])."')";  
}  
  
$query = 'INSERT INTO '.DB_TABLE.' (title, firstname, lastname, email) VALUES '.  
 implode(', ', $values);  

Christoph