Gå til innhold

Inlegging i MySQL, med tilbakemelding av id


Anbefalte innlegg

Hvordan kan jeg få tak i id'n på det jeg setter inn i mysql databasen med kall fra php

 

mysql_query("INSERT INTO ---- (id, navn, adr) VALUES ('', 'test', 'adressen') ;");

 

id i dette tilfellet er auto_increment og trenger å få tak i den verdien som tilhører mitt insatte objekt.... seff kan man bruke max() kommandoen, men den er ikke sikker nok i mitt tilfelle, da man ved uheldigheter kan få system svitch og få satt inn et nytt objekt før man får kjørt neste kall.

 

Hvis dette ikke går, hvordan kan jeg låse MySQL til å kun tillate tilgang fra den ene connectionen/sessionen mens dette skjer. Jeg husker ikke helt hva det heter :( så, men kanskje det var noe med lock....

 

 

Mobsan

Lenke til kommentar
Videoannonse
Annonse

$temp = mysql_query("INSERT INTO ---- (id, navn, adr) VALUES ('', 'test', 'adressen') ;");

 

$id = mysql_insert_id($temp);

 

vil det gå?

om ikke så kan den ikke være sikker på at det ikke har vært en system svitch mellom der som kan ha manipulert dataen!

Lenke til kommentar

Men fortsatt så er det ingen ting som sier at det ikke kan skje noe mellom de to linjene.

 

Det jeg kanskje mest er ute etter er:

 

lock(TABELL_navn)

INSERT.....

GET id....

unlock(TABELL_navn)

 

da vil ingen andre ha tilgang til den tabellen mens jeg gjør de kritiske endringene

Lenke til kommentar
da man ved uheldigheter kan få system svitch og få satt inn et nytt objekt før man får kjørt neste kall.

LAST_INSERT_ID() og mysql_insert_id() tar hensyn til dette.

Du får returnert id'n til den mysql oppkoblingen/session'n du har.

Så det er ingen fare for det du skisserer.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...