Spelmann
Erfahrenes Mitglied
Ich habe einer Schleife, in der ich ein XML-File auslese und die zugehörigen Datensätze einer DB aktualisiere. Nun möchte ich eine Funktion einbauen die es mir erlaubt, jene Datensätze der XML, die noch nicht in der DB erfasst sind, via INSERT nachzutragen.
So funktionierts aber nicht:
Wenn ich den jeweiligen Datensatz der Schleife testenshalber mal manuell vergleiche gehts aber.
Also sind mehrere prepared Statements innerhalb einer Schleife scheinbar kein Problem.
Was mache ich falsch?
So funktionierts aber nicht:
PHP:
$insert = $db_link->prepare('insert INTO tl_figur (nummer, name, size, gattung, sprache_rate, sprache_duktus) VALUES (?, ?, ?, ?, ?, ?)');
$update = $db_link->prepare('UPDATE tl_figur SET name=?, size=?, gattung=?, sprache_rate=?, sprache_duktus=? WHERE nummer=?');
$search = $db_link->prepare('SELECT count(*) FROM tl_figur where nummer=?');
foreach ( simplexml_load_file('./xml_sources/myXML.xml') as $elems ) {
//Auslesen der XML-Knoten
$nummer = (string)$elems->NUMMER;
$name = (string)$elems->NAME;
$size = (double)$elems->SIZE;
$gattung = (string)$elems->GATTUNG;
$sprache_rate = (string)$elems->SPRACHE->WORTRATE;
$sprache_duktus = (string)$elems->SPRACHE->DUKTUS;
//Update (funktioniert hier nur, wenn ich den folgenden Abschnitt "Insert" auskommentiere)
$update->bind_param('sdsssi', $name, $size, $gattung, $sprache_duktus, $sprache_rate, $nummer );
$update->execute();
//Insert
$search->bind_param("s", $nummer);
$search->execute();
if($search->fetch() == 0){
$insert->bind_param('ssdsss', $nummer, $name, $size, $gattung, $sprache_rate, $sprache_duktus );
$insert->execute();
}
}
PHP:
//Insert
if($nummer == "4711"){
$insert->bind_param('ssdsss', $nummer, $name, $size, $gattung, $sprache_rate, $sprache_duktus );
$insert->execute();
}
Was mache ich falsch?
Zuletzt bearbeitet: