hawkmaster: Try & Catch sauberer Stil oder zu aufwändig?

Beitrag lesen

Hallo nochmals,
ich hoffe mal das hier vielleicht noch jemand reinschaut auch wenn der Thread schon ein paar Tage alt ist.
Ich möchte ja verhindern das doppelte Einträge in eine Tabelle geschrieben werden. Die Spalte "dep_name" steht auf "UNIQUE".

Folgendes habe ich nun mit "try - catch" versucht.
$result = $DBO->query("SELECT dep_name FROM departments") or warning($DBO);
while ($row = $result->fetch()){
if (strtoupper($d_name) != strtoupper($row['dep_name'])){
try {
$DBO->exec("INSERT INTO departments (dep_name) VALUES ('$d_name')");
$DepartmentsID = $DBO->lastInsertId();
} catch(PDOException $e) {
print "Error / FEHLER!: " . $e->getMessage() . "<br/>";
}
}else{
$department_check = "same";
}
}//while

Ich habe jetzt also den "try" Zweig nur beim Insert Versuch.
Wenn ich z.b. 8 Abteilungs Namen in der Tabelle habe kommt 8 mal im Catch Block die Fehlermeldung. Das wäre ja ok so.

Was ich nun aber nicht verstehe.
Nachdem die While Schleife fertig ist kommt aber trotzdem dann noch ein Fatal Error:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ...

Warum denn dies?

vielen Dank
Gruss
hawk