[PHP] Laatste id achterhalen

Pagina: 1
Acties:
  • 55 views sinds 30-01-2008

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 24-04 13:47
Ik wil de laatste id achterhalen van een row die ik net heb ingevoerd.
De kolom id is auto_incredement, dus dat nummer bepaal ik niet zelf maar wordt als het ware 'gegeven'.

Nu is het volgende het geval:
Ik heb een rij ingevoerd, en die rij heeft een id gekregen.
Nu meteen daarna wil ik achterhalen wat die id was. Nu heb ik de volgende methode daarvoor:
PHP:
1
2
3
$s_laatste_foto_id = mysql_query("SELECT id FROM fotos ORDER BY id DESC LIMIT 1 ") or die ( mysql_error() );
$f_laatste_foto_id = mysql_fetch_array($s_laatste_foto_id);
$laatste_foto_id = $f_laatste_foto_id['id'];

Ik gebruik nu de "$laatste_foto_id" om de naam van de foto te bepalen. Daarna doe ik een UPDATE op de boven ingevoerde rij, die ik dus kan herkennen aan de "$laatste_foto_id".

Máár, is dit een veilige methode? Deze code wordt meteen uitgevoerd na het invoegen van de rij.

Máár, is het mogelijk dat 2 users tegelijkertijd een rij invoeren en zo per ongelijk elkaars id krijgen?

Of is er een betere methode?

Verwijderd

mysql_insert_id -- Geef het id dat gegenereerd werd door de vorige INSERT query

http://at2.php.net/manual/nl/function.mysql-insert-id.php

Verwijderd

Ikzelf gebruik zelf deze oplossing

Moet je wel meteen doen na een insert query,

code:
1
2
3
4
5
<?php
$result = mysql_query("SELECT MAX(id) FROM `fotos`") or die ( mysql_error() );
$array = mysql_fetch_array($result);
$id = $array[0]['id']; 
?>


Een nadeel, wanneer er veel mensen tergelijkertijd dezelfde actie uitvoeren, kan het misgaan (id van een ander)

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 24-04 13:47
Verwijderd schreef op zondag 01 mei 2005 @ 14:49:
mysql_insert_id -- Geef het id dat gegenereerd werd door de vorige INSERT query

http://at2.php.net/manual/nl/function.mysql-insert-id.php
Heb je dan niet alsnog het probleem dat als 2 mensen precies tegelijkertijd een rij invoeren, de kans bestaat dat ze elkaars id krijgen ?

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 14:44

Kees

Serveradmin / BOFH / DoC

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 14:44

Kees

Serveradmin / BOFH / DoC
verytallman schreef op zondag 01 mei 2005 @ 14:51:
[...]

Heb je dan niet alsnog het probleem dat als 2 mensen precies tegelijkertijd een rij invoeren, de kans bestaat dat ze elkaars id krijgen ?
nee, want hij pakt het laatste ID van de huidige connectie, dit risico loop je veel sneller met de methodes die hierboven beschreven staan met selects.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Zoals KillzALoT en Kees al aangeven staat het antwoord op je vraag netje sin de PHP manual. Dit had je ook makkelijk zelf kunnen vinden. Bekijk P&W FAQ - De "quickstart" nog eens. Hierin zie je dat we van iemand verwachten zelf actief naar een oplossing te zoeken. En je gaat me toch niet vertellen dat je de PHP mysql-functions documentatie hebt bekeken en dit hebt gemist? ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.