Ich bin verwirrt mit der Art, wie lastInsertId() -Funktion geschrieben wird. Sagen wir zum Beispiel, ich habe die folgenden Abfragen mit der Funktion lastInsertId().PHP PDO lastInsertId() Funktion Verwirrung
$myinsert = $pdo->prepare("INSERT INTO some_table(something)VALUE(:something");
$myinsert -> bindValue(':something', $something);
$myinsert -> execute();
$insert = $pdo->prepare("INSERT INTO table(something)VALUE(:something");
$insert-> bindValue(':something', $something);
$insert-> execute();
$lastId = $pdo->lastInsertId();
$stmt = $pdo->prepare("INSERT INTO another_table(something)VALUE(:something");
$stmt -> bindValue(':something', $something);
$stmt -> execute();
Jetzt ist die Verwirrung, die wie jeder weiß und kann hier sehen, dass in den satement $lastId = $pdo->lastInsertId();
es keine wo erwähnt, ob die letzte Eingabe-ID aus $myinsert
Abfrage oder $insert
Abfrage oder aus $stmt
Abfrage holen. Woher weiß es, woher die ID kommt? Da lastInsertId()
Funktion über die $stmt
Abfrage platziert wird, wird es definitiv nicht die zuletzt eingefügte ID aus $stmt
Abfrage abrufen, als die $lastid
wurde $stmt
Abfrage wurde noch nicht ausgeführt wurde. Aber woher weiß es, dass es von $insert
Abfrage abfragen muss und nicht von $myinsert
Abfrage wie in der gesamten Anweisung $lastId = $pdo->lastInsertId();
gibt es nichts definiert wie aus so und so bestimmte Abfrage zu holen? Bitte hilf mir zu verstehen, wie es funktioniert.
Ich bin nicht so vertraut mit PDO unter der Haube. Vielleicht kann es jemand besser erklären. Aber Sie können dies als einen Sorta Getter von einer Instanzvariable in der PDO-Instanz ('$ pdo') sehen. Für jeden 'INSERT'-Aufruf an die Datenbank antwortet dieser mit einer Statusinformation. Darauf basierend wird festgestellt, ob der INSERT erfolgreich ist oder nicht. Die aus der Information erhaltene ID wird dann in einer Variablen gespeichert und bei jedem nächsten erfolgreichen INSERT-Aufruf überschrieben. – KarelG
Es gibt Ihnen nur die Einfüge-ID aus der letzten Einfügung vor dem Aufruf, die einen Auto-Inkrement-Wert generiert. Es kann sein, dass jede Einfügung einen erzeugt, aber es wird nur der letzte sein, der vor diesem Aufruf ausgeführt wurde. –
@NigelRen das wollte ich klarstellen .... das wusste ich aus meiner erfahrung aber wollte nur klar machen, dass das was ich denke richtig ist .. wenn das eine antwort wäre hätte ich +1 gegeben;) danke kumpel ;) –