Christian Kruse: XML in mySQL einlesen - Performanceproblem

Beitrag lesen

你好 whine,

INSERT INTO tabelle (feld1,feld2,feld3) VALUES (feld1wert,feld2wert,feld3wert),(feld1wert,feld2wert,feld3wert),(feld1wert,feld2wert,feld3wert)

Oje, wie kriege ich denn das SQL-Statement mit einer for-Schleife zerhackt?
Oder seh ich den Wald vor lauter Bäumen nicht?

Naja, du setzt den ersten Teil des Queries vor der Schleife zusammen, und danach hängst du an den Query-String nur noch so ein Values-Konglomerat an. So, z. B.

  
if(file_exists($filename)) {  
  $xml = simplexml_load_file($filename);  
  
  if($xml) {  
    $sql = "INSERT INTO messwerte_tbl (id,  
                ".$xml->{"ChannelInfo1"}->Name.",  
                ".$xml->{"ChannelInfo2"}->Name.",  
                ".$xml->{"ChannelInfo3"}->Name.",  
                ".$xml->{"ChannelInfo4"}->Name.",  
                ".$xml->{"ChannelInfo5"}->Name.",  
                ".$xml->{"ChannelInfo6"}->Name.",  
                ".$xml->{"ChannelInfo7"}->Name.",  
                ".$xml->{"ChannelInfo8"}->Name.",  
                ".$xml->{"ChannelInfo9"}->Name.",  
                ".$xml->{"ChannelInfo10"}->Name.",  
                ".$xml->{"ChannelInfo11"}->Name.",  
                ".$xml->{"ChannelInfo12"}->Name.",  
                ".$xml->{"ChannelInfo13"}->Name."  
  
                ) VALUES";  
  
    for ($i=1; $i < count($xml); $i++) {  
      $sql .= "('".$id."',  
                 '".$xml->{"M$i"}->{"Ch1"}."',  
                 '".$xml->{"M$i"}->{"Ch2"}."',  
                 '".$xml->{"M$i"}->{"Ch3"}."',  
                 '".$xml->{"M$i"}->{"Ch4"}."',  
                 '".$xml->{"M$i"}->{"Ch5"}."',  
                 '".$xml->{"M$i"}->{"Ch6"}."',  
                 '".$xml->{"M$i"}->{"Ch7"}."',  
                 '".$xml->{"M$i"}->{"Ch8"}."',  
                 '".$xml->{"M$i"}->{"Ch9"}."',  
                 '".$xml->{"M$i"}->{"Ch10"}."',  
                 '".$xml->{"M$i"}->{"Ch11"}."',  
                 '".$xml->{"M$i"}->{"Ch12"}."',  
                 '".$xml->{"M$i"}->{"Ch13"}."')";  
      if($i < count($xml) - 1) $sql .= ",";  
    }  
  
    $eintrag = mysql_query($sql) or die("Fehler: ".mysql_error());  
  }  
}

Code ist zwar ungetestet, sollte aber laufen.

再见,
 克里斯蒂安

--
http://wwwtech.de/
IRC-Clients und Irssi-Scripting | Flyspray
Wenn auf Erden alle das Schoene als schoen erkennen, so ist dadurch schon das Haessliche bestimmt.