echo $begrüßung;
Es ist für alle Beteiligten besser, wenn du deine Probleme an einer Stelle diskutierst und nicht jedes Mal einen neuen Beitrag eröffnest. Die Antwortenden können dann an einer Stelle übersichtlich sehen, was bisher gelaufen ist, und du kannst dann zielgenauere Antworten bekommen.
Bisher schrieb ich in die DB mit den "mysql" Funktionen.
mysql_query($sql, $MYSQL['LINK']);
Hier gab es keine Fehlermeldung wenn versucht wurde einen doppelter Eintrag zu schreiben.
Das ist so nicht richtig. Den Fehler gab es, nur hast du ihn bisher ignoriert, weil du ihn nicht abgefragt hast. MySQL kennt für das INSERT-Statement das Schlüsselwort IGNORE, dass im Falle einer Unique-Verletzung die Ausführung unterlässt, dabei aber keinen Fehler erzeugt.
Man kann das ja nun mit "try und catch" abfangen.
$result = $DBO->query("SELECT dep_name FROM departments") or warning($DBO);
try {
while ($row = $result->fetch()){
$DBO->exec("INSERT INTO departments (dep_name) VALUES ('$d_name')");
$DepartmentsID = $DBO->lastInsertId();
}//while
} catch(PDOException $e) {
print "Error / FEHLER!: " . $e->getMessage() . "<br/>";
}
So wie du hier das try-catch mit dem while geschachtelt hast, wird der komplette Fetch-Vorgang abgebrochen, wenn eines der Inserts misslingt. Vermutlich willst du aber nicht den Fetch-Vorgang versuchen (try) sondern das Einfügen.
Oder ist es besser einen etwaigen Fehler gleich auszuschließen?
Besser wäre es vielleicht, die Abfragen gleich so zu formulieren, dass nur die gewünschte Datenmenge entsteht. Mit Subselects (sofern vom DBMS unterstützt) sollte sich eine weitere Verbesserung erreichen lassen. Außerdem kennt MySQL ein INSERT ... SELECT ....
Mich würde nun interessieren, welches ein sauberer Programmierstil wäre.
Das musst du mit dir und deinem Gewissen ausmachen. :-) Jeder hat ja von "sauber" so seine eigenen Vorstellungen.
wie würdert Ihr das machen?
Vermutlich als ein SQL-Statement. Ohne mir das Problem genauer angesehen zu haben, scheint es mir so, als ob es sich mit Nur-SQL lösen lässt.
Mir scheint der Aufwand sehr hoch bei jedem SELECT; INSERT, UPDATE immer alles mit "try" und "catch" abzufangen?
Fehler abzufangen gehört zum Programmieren dazu. Mitunter muss für das Fehlerabfangen mehr Code geschrieben werden als für den Gutfall. Doch als Resultat erhält man ein robustes Programm, das nicht gleich bei jedem Windstoß umfällt.
echo "$verabschiedung $name";