Avatar billede dank Nybegynder
19. maj 2003 - 22:43 Der er 12 kommentarer og
1 løsning

Enkel select

Jeg har en tabel: kunder, med idnumre hvordan finder jeg simpelt det højeste nummer i idnumre int(5)
Avatar billede schaefner Juniormester
19. maj 2003 - 22:44 #1
SELECT id FROM tabel ORDER BY id DESC LIMIT 1
Avatar billede schaefner Juniormester
19. maj 2003 - 22:45 #2
Eller måske
SELECT MAX(id) AS high FROM tabel
Avatar billede arne_v Ekspert
19. maj 2003 - 22:48 #3
Du skal bare ikke kode efter at du kan indsætte det fundne nummer + 1
som unik ID et par linier længere nede i din applikation.
Avatar billede dank Nybegynder
19. maj 2003 - 23:11 #4
arne_v> Jeg har et script som indsætter en masse data, undtagen netop id, som er auto_increment, men jeg skal bruge dette nummer i linien lige under fordi jeg skal indsætte et timestamt i en anden tabel.

Der sker der vel ikke noget ved?
Avatar billede schaefner Juniormester
19. maj 2003 - 23:13 #5
Så kan du måske istedet bruge mysql_insert_id();

$id = mysql_insert_id();

lige efter at har du indsat det første.
Avatar billede dank Nybegynder
19. maj 2003 - 23:14 #6
schaefner> SELECT MAX  ser ud til at virke korrekt.. svar?
Avatar billede dank Nybegynder
19. maj 2003 - 23:15 #7
schaefner> kan du forklare hvad du mener med $id = mysql_insert_id();

Finder den bare aut det der lige er indsat? eller?
Avatar billede schaefner Juniormester
19. maj 2003 - 23:16 #8
ja, noget i den stil ;)
Avatar billede arne_v Ekspert
19. maj 2003 - 23:16 #9
Du kan nede MySQL om det sidste autogenererede nummer.

select max + 1 kan gå galt i samme øjeblik der er 2 der opdaterer
samtidigt.

Scenarie:

max er 8
select max returnerer 8
en anden bruger indsæter 9
8 + 1 = 9
gem 9

ups !
Avatar billede dank Nybegynder
19. maj 2003 - 23:20 #10
arne_v> Ja. det kan jeg godt se.. men det ville ikke være den store katastrofe *hvis* det skete. det er bare et ikke "mission critical" timestamp.. Der indsættes kun 3-4-5 gange i løbet af et døgn, så chancen er meget meget lille for at det sker samtidig.. Men ok.. Jeg kender godt murphy's lov :)

Scharfner> Jeg har lige prøvet $id = mysql_insert_id(); Som ser ud til at virker! Herlig nemt måde! Og ifølge: http://dk.php.net/manual/en/function.mysql-insert-id.php er det jo netop lige det jeg har behov for.

Om der er risiko ved denne metode som arne har beskrevet kan jeg ikke lige overskue.. men det er ikke så vigtigt.. :)
Avatar billede dank Nybegynder
19. maj 2003 - 23:21 #11
ups.. arne_v fik ingen point.. skal du have point,så opretter jeg særskilt svar
Avatar billede arne_v Ekspert
20. maj 2003 - 00:53 #12
Hvis mysql_insert_id gør det jeg tror den gør, så er den metode
helt OK. Du indsætter og så spørger du MySQL om den sidste indsat
via denne connection.

Og jeg skal ikke have nogen point, da jeg ikke har bidraget med svar til
selve spørgsmålet - kun påpeget en lille finesse i forbindelse med
brug af svaret.
Avatar billede dank Nybegynder
20. maj 2003 - 01:07 #13
ok, men du kom med brugbar info i alle tilfælde, det er jeg da taknemmelig for :) takker!
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
Computerworld tilbyder specialiserede kurser i database-management

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