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