Ola mensen,

In dit topic wordt gezegd:


Overigens, nog een tip, kan je het nog makkelijker doen omdat je het laatst gegenereerde auto increment id kan opvragen met de query:

SELECT LAST_INSERT_ID()


Ik ging er vanuit dat hiermee bedoeld wordt dat je op deze manier altijd het laatse auto increment id kunt opvragen. Altijd, dus ook als je niks ge-insert hebt. Echter, als ik het nu probeer komt er telkens 0 uit. Heb ik dit verkeerd begrepen en werkt het alleen na een INSERT?
Ja natuurlijk!
En tenzij je een bulk insert doet, maak je gewoon gebruik van de insert_id functie van PDO
Van de mysql manual:

LAST_INSERT_ID() (with no argument) returns a BIGINT (64-bit) value representing the first automatically generated value that was set for an AUTO_INCREMENT column by the most recently executed INSERT statement to affect such a column.

En daarbij moet je dan eigenlijk nog vermelden 'binnen de huidige connectie'. Het werkt dus ook niet over connecties heen. Als jij dus iets invoert in een pagina en dan op de volgende pagina via die LAST_INSERT_ID het id probeert op te halen dan gaat dat ook niet lukken.
Euh oke... maar nu snap ik het even niet.

Als ik het dus goed begrijp werkt het alleen na een INSERT. Maar dan kun je toch beter gewoon de PDO functie lastInsertId() gebruiken? Waarom dan die SELECT query? :-s

Toevoeging op 10/06/2013 22:34:33:

Oh, en er is dus ook geen standaard functie/manier om de laatste ID op te vragen zonder dat er een INSERT heeft plaatsgevonden?
Ja dat kan. Waarmee je dus gewoon hetzelfde doet overigens, want die functie gebruikt dezelfde query. Beide opties zijn in elk geval beter dan via een query het hoogste id op te halen uit de betreffende tabel.

En nee, er is geen standaard functie om een id op te halen. Daarvoor moet je dan wel gewoon een select query maken met een MAX() erin.
Oké, thanks! Ik dacht dus dat het een mooie manier was om (zonder INSERT) het laatste ID op te halen, maar helaas... ga ik m'n method maar weer terug aanpassen ;-)

Reageren