Hallo dedlfix,
ja du hast natürlich recht.
Ich habe mittlerweile auch gemerkt das mein Konstrukt etwas umständlich bzw. nicht gut ist.
Es geht darum.
Ein Anwender kann sich neu an einem System anmelden. Dazu gibt es seinen Namen, Login, Passwort, Email und halt auch seine Abteilung an.
Wenn es diese Abteilung noch nicht in der Tabelle "departments" gibt soll sie hinzugefügt werden. Damit doppelte Abteilungen wirklich ausgeschlossen werden habe ich die Spalte al UNIQUE gesetzt.
Bisher mit mysql() sind mir die Fehlermeldungen bei Schreibversuche nicht aufgefallen, weil wie du ja so gut erklärt hast, das mysql ignoriert hat.
Deine Lösungen sind natürlich viel eleganter und sauberer.
Ich muss gestehen das ich den "Insert Ignore" noch nie benutzt hatte.
Auch wäre ich vermutlich nicht auf deine letzte Lösung gekommen.
<<
if ((SELECT count(*) ... WHERE dep_name = $d_name)->fetchColumn(0))
// schon vorhanden
else
INSERT INTO departments (dep_name) VALUES($d_name)
// eingefügt
fetchColumn(0) holt doch die erste Spalte der nächsten Zeile.
Warum machst du hinten noch die Zuweisung ->fetchColumn(0)?
Würde es nicht auch so gehen?
if($DBO->query("SELECT count(*) FROM departments WHERE dep_name = '$d_name' ") ){
viele Grüße und nochmals vielen Dank
hawk