Avatar billede mjl Nybegynder
21. november 2004 - 13:16 Der er 21 kommentarer og
2 løsninger

Finde næste id-nr i MySQL

Hej der...

Dette handler om MySQL, men - det er kode i PHP, jeg søger, til følgende problem!

I min database, har jeg som første felt "brugerid" dette er sat til "auto_increment", så id automatisk bliver 'en større hver gang en tilmelder sig. Men...!!

Hvis jeg f.eks. er nået til nr. 132 i DB'en, og jeg sletter en bruger, så vil næste id jo være 133, men sidste id vil være 131, da 132 jo er slettet...!

Problemet : Jeg vil gerne "kalde" næste id-nr - altså tjekke hvad næste nr. vil blive - finder jeg så sidste nr. og lægger 1 til, bliver det jo ikke sandt, da jeg jo har slettet en post i DB,en - forstår I? Er der en måde, hvor jeg kan tjekke hvad næste nr. vil blive, selv om der er blevet slettet i DB'en???

hilsen Conrad
Avatar billede sukos Juniormester
21. november 2004 - 13:18 #1
SELECT MAX(id) FROM table
returnerer jo den højeste værdi
Avatar billede mjl Nybegynder
21. november 2004 - 13:19 #2
Den returnerer "1"
Avatar billede Slettet bruger
21. november 2004 - 13:21 #3
Hvad skal du bruge det næste ID til? Det vil jo ikke være relevant før du skal oprette den nye, og der kan du hente ID på den netop oprettede post med mysql_insert_id()
Avatar billede mjl Nybegynder
21. november 2004 - 13:24 #4
Hvordan bruger jeg "mysql_insert_id()" ?
Avatar billede michael_stim Ekspert
21. november 2004 - 13:25 #5
Sög på www.php.net , der kan man altid söge på funktioner.
Avatar billede mjl Nybegynder
21. november 2004 - 13:25 #6
...jeg skal, efter tilmelding, oprette endnu en DB med andre oplysninger, på denne bruger, og skal derfor bruge det ID han/hun fik!
Avatar billede michael_stim Ekspert
21. november 2004 - 13:26 #7
Avatar billede sukos Juniormester
21. november 2004 - 13:27 #8
$gethigh = mysql_query("SELECT MAX(id) FROM `table`") or die (mysql_error());
echo mysql_result($gethigh, 0);

For at få den nyligt indsatte id, bruger du blot

$nr = mysql_insert_id();

men altså lige efter du har indsat i DB'en
Avatar billede sukos Juniormester
21. november 2004 - 13:29 #9
$query = "INSERT INTO `table` (`navn`, `pass`) VALUES ('Hejsa', 'noget')";

if(mysql_query($query)) {
$nr = mysql_insert_id();

$nyquery......................................

}
Avatar billede Slettet bruger
21. november 2004 - 13:30 #10
Det er lige netop det, mysql_insert_id() er til. Og brugen er beskrevet ganske enkelt i manualen på den side, som Michael linkede til. (Tag dig ikke af, at nogle af overskrifterne er på svensk - det er bare fordi han linkede til den svenske udgave af manualen - heldigvis har de ikke oversat selve teksten.)
Avatar billede michael_stim Ekspert
21. november 2004 - 13:31 #11
Bor i Sverige, så den kommer over på den svenske side autoamtisk ;o) Men det skulle väre til at forstå (tror jeg).
Avatar billede mjl Nybegynder
21. november 2004 - 13:34 #12
Jamen, det var jo herligt, 1000 tak! Er det Sukos, der skal ha' points?
Avatar billede sukos Juniormester
21. november 2004 - 13:39 #13
vi er da vist lige go'e, måske lige på nær at jeg skriver lidt kode! :O)
Avatar billede sukos Juniormester
21. november 2004 - 13:41 #14
Du skal bare lige vide, at du ikke kan være 100% på at $nr har den rigtige værdi hvis der er flere request på samme tid.
Avatar billede mjl Nybegynder
21. november 2004 - 13:41 #15
ok - men smid svar, så gi'r jeg points'ne! :o) Og tak igen!
Avatar billede mjl Nybegynder
21. november 2004 - 13:41 #16
...dét er jeg klar over, men tilmeldingerne er ikke overvældende :o)
Avatar billede sukos Juniormester
21. november 2004 - 13:42 #17
Nu skal du ikke kun gi' til mig!!!
Avatar billede michael_stim Ekspert
21. november 2004 - 13:44 #18
Man lägger först svar når man ved at spörgeren kan bruge det. Hopper over pointene da jeg bare viste hvor du kunne få kode/svar på sandbox svar.
Avatar billede Slettet bruger
21. november 2004 - 13:44 #19
Og jo, det burde være sikkert, at man får den rigtige værdi, da den returnerer den sidst indsatte id for den aktuelle mysql-forbindelse. Det er altså ikke muligt at have flere requests på samme tid.
Avatar billede Slettet bruger
21. november 2004 - 13:45 #20
Så lægger jeg da et lille et også.
Avatar billede sukos Juniormester
21. november 2004 - 13:47 #21
? sandbox
Det har jeg nu aldrig lært?

Men ved lidt læsning i manualen, så har du da vist ret!
Avatar billede michael_stim Ekspert
21. november 2004 - 13:47 #22
Og bare lige et tip. Brug php.net flittigt, mange gange findes svaret der. Så slipper man for at vente på svar her (selv om de mange gange kommer hurtigt).
Avatar billede mjl Nybegynder
21. november 2004 - 13:54 #23
Bruger også PHP-net - men nogen gange, vil man gerne lidt hurtigt videre, og I er jo så kanon-flinke - Tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester