dedlfix: mysql fehler 1062 Doppler id finden

Beitrag lesen

Tach!

bei jedem neuen Eintrag benötige ich die erzeugte id zur weiteren Nutzung in einer anderen Tabelle. Das erhalte ich durch: mysql_query("select LAST_INSERT_ID()"),0);

Oder einfacher mit mysql_insert_id(). Eigentlich ist es aber besser, die bereits abgekündigten mysql_*-Funktionen nicht mehr zu verwenden, sondern mysqli_* oder PDO. Beide haben Äquivalente zu mysql_insert_id().

Die wert-spalte ist unique, was natürlich im Konfliktfall somit keine id liefert, da nicht eingetragen. Dieser Fehler lässt sich ja noch abfangen mit: if(mysql_errno() == 1062))...

Doch damit erhalte ich immer noch nicht die betreffende id. Nun kann ich zwar eine erneute Abfrage machen um diese zu erfahren, doch das Manual lässt hoffen, dass auch die Fehlermeldung diese liefern könnte, allerdings verstehe ich die Aussage nicht im Manual:

Error: 1062 SQLSTATE: 23000 (ER_DUP_ENTRY)
Message: Duplicate entry '%s' for key %d
The message returned with this error uses the format string for ER_DUP_ENTRY_WITH_KEY_NAME.

Der doppelte Eintrag %s ist der Wert der Unique-Spalte, in deinem Fall also das was du als "wert" einfügen wolltest. Das kennst du ja aber schon und musst es nicht aus der Fehlermeldung klauben. %d lässt auf eine Zahl schließen. Damit kann eigentlich nicht der Primärschlüssel gemeint sein, denn der kann auch nichtnumerisch sein. Aber wenn man diesen Fehler mal provoziert, sieht man was wirklich vorliegt, nämlich der Name vom Unique-Index, also letztlich doch ein String. Jedenfalls ist das eine für deinen Fall unwichtige Information.

Somit meine Frage: Komme ich an die ID des Dopplers anhand einer Rückgabe von mysql oder wie löst ihr so was?

Da der "wert"-Wert eindeutig (und hoffentlich NOT NULL) ist, kannst du problemlos darüber die zugehörige ID ermitteln.

dedlfix.