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

Beitrag lesen

Hallo zusammen,
Folgende Situation:
Die Spalte "dep_name" einer MySQL Tabelle ist mit "UNIQUE" definiert.
Bisher schrieb ich in die DB mit den "mysql" Funktionen.

$result = mysql_query("Select dep_name from departments") or mysql_error();
while ($row = mysql_fetch_array($result)){
$sql  = "INSERT INTO departments (dep_name) ";
$sql .= "VALUES ('$d_name')";
mysql_query($sql, $MYSQL['LINK']);
}

Hier gab es keine Fehlermeldung wenn versucht wurde einen doppelter Eintrag zu schreiben.
Mit DBO und aktiviertem;
$DBO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
kommt jedoch sofort eine Fehlermeldung und das Script bricht ab.

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/>";
}

Oder ist es besser einen etwaigen Fehler gleich auszuschließen?

$result = $DBO->query("SELECT dep_name FROM departments") or warning($DBO);
$alldeps = $result->fetchAll()
foreach($alldeps as $departmentname){
 if(in_array($d_name,$departmentname)){
  echo "Department schon vorhanden! <br>";
 }
}

Mich würde nun interessieren, welches ein sauberer Programmierstil wäre.
wie würdert Ihr das machen?
Mir scheint der Aufwand sehr hoch bei jedem SELECT; INSERT, UPDATE immer alles mit "try" und "catch" abzufangen?

vielen Dank und viele Grüße
hawk