dedlfix: Try & Catch oder Insert IGNORE ??

Beitrag lesen

echo $begrüßung;

Wie gesagt: Bei Refreshen des Browser und vorherigen Insert gibt es ohne Fehlerbehandlung folgenden Abbruch:

Da du bisher nicht gesagt hattest, dass du PDO verwendest, ging ich vom (leider zu oft) allgemein üblichen "mysql_...() or die(...)" aus. Die mysql-Extension klagt über Fehler nur leise. Die schnellste und unsauberste Methode, auf Fehler zu reagieren ist, das Script sterben zu lassen. Deswegen empfahl ich, das Sterbenlassen wegzulassen. PDO wirft eine Exception, die du abfangen musst. Es gibt sicher noch andere Stellen in deinem Script, die potentiell misslingen können und dann ebenfalls eine Exception werfen. Auch um die müsstest du dich kümmern, wenn du ein robustes Script haben willst.

Mache ich den Insert mit IGNORE
kommt im Fehlerfall keine Meldung und der Insert wird auch nicht gemacht. OK so.

Da du genau den Duplicate-Fall ignorieren willst, ist das so in Ordnung.

Ich kann es aber auch mit Try & Catch machen.
Allerdings habe ich das echo im Catch Teil nur zum testen. Im Original Script braucht / will ich das nicht. eigentlich bleibt dann das Catch leer.

Es gibt noch mehr Ursachen für ein misslungenes Insert. Am besten ist, nur genau den Duplicate-Fehler zu ignorieren, und die anderen angemessen zu behandeln. Auf genau den Duplicate-Fehler kannst du (hoffentlich, ich hab mit PDO nicht so viel Erfahrung) prüfen, indem du das PDOException-Objekt untersuchst. Ich nehme an, mit $ex->getCode() kommst du an einen eindeutigen und von anderen Ursachen unterscheidbaren Wert. Probier das mal mit einem Duplicate-Fall und mit beispielsweise einem Syntax-Fehler im Insert-Statement.

echo "$verabschiedung $name";