Hallo,
ich melde mich mal wieder
Ich habe ein Forum zu meinem Browsergame geschrieben, wobei ich folgendes gerne wissen würde:
In diesem MySQL-Befehl gebe ich von meinem Formular, die boardid ($boardid = $_POST’boardid’];), die userid ($user[id] = $_SESSION[‚userid‘];), usw. alle Werte sind bestimmt also müsst ihr euch darum keine Sorgen machen.
hervorragend! Thema wurde erstellt…was nun?Ganz einfach! ich möchte den Text, der eingegeben wurde ($message = $_POST[‚message‘]) nun in den Beiträgen speichern. Allerdings muss der Eintrag mit der id (hier mein AUTO_INCREMENT) von dem Thema mit der topicid der Eintragstabelle verknüpft werden.
Ich könnte natürlich jetzt noch im selben Script die letzte ID auslesen aber wa s passiert, wenn jemand im genau selben Moment auch ein neues Thema erstellt hat und die letzte id beim Übergang auf dem nächsten Befehl nun eine andere ist? ganz einfach…der Beitrag wäre nicht im gewünschten Thema sondern in dem andern, welches auch gerade erstellt wurde.
Ich hoffe ich hab es einigermaßen gut ausgedrückt >.<
in Google hab ich da nichts wirklich brauchbares gefunden.
ich weiß nicht genau was du meinst, aber wenn du t.b. einen neuen eintrag erstellst, und danach direkt einen neuen speichern willst in eine andere tabelle die aber die Id der anderen beinhalten soll dann nimmst mysql_insert_id(); ^^
jo so hatte ich es aber ih dachte, dass dies nicht wirklich eine „professionelle“ Lösung ist.
Frage: fragt
mysql_insert_id();
allgemein die letzte ID oder nur die, die zuletzt in der selben Datei eingetragen wurde?
Nochmal ganz ausdrücklich, int mysqli::insert_id(), int mysql_insert_id() bzw string PDO::lastInsertId() geben die letzte automatisch erzeugte (Primay-Key) ID zurück, die über die selbe(!) Datenbankverbindung mit einem INSERT/REPLACE INTO query erzeugt wurde, jede andere instanz des scriptes hat üblicherweise eine eigene Verbindung und deshalb kann es zu keinen Race Conditions kommen, die „professionelle“ methode ist also wirklich, wie immer, total einfach, man benutzt einfach diese funktionen/methoden. Natürlich musst du immer das selbe Datenbank-Handle (~ Die selbe variable vom typ Resource) nehmen wie du auch für das INSERT/REPLACE INTO query genommen hast