Avatar billede mulles.tk Nybegynder
08. maj 2005 - 19:37 Der er 10 kommentarer og
1 løsning

Indsæt data i DB

Når en person opretter sig som bruger, skal dataene indsættes i to tabeller, en med brugeroplysninger og en anden med login.... Relationen mellem dem skal så være et unikt brugerID, som automatisk bliver genereret i tabellen med brugeroplysningerne. Men hvordan får jeg gjort sådan, at når dataene er indsat i tabellen og ID'et er blevet genereret, at jeg så får hentet det ID før dataen indsættes i tabellen med loginoplysningerne?

Er dette klart nok? hehe....
Avatar billede busschou Praktikant
08. maj 2005 - 19:42 #1
Du kan jo bare lave det af steps
1) Indsætte i bruger tabel
2) Hente Id fra brugertabel hvor alle dine indsatte oplysninger er givet
3) indsætte i login tabel
Avatar billede mulles.tk Nybegynder
08. maj 2005 - 19:45 #2
Ja... sådan havde jeg også tænkt mig det, men hvordan?? hehe...

Kan du lave selve strukturen, så smider jeg bare de nøjagtige 'INSERT INTO' i bagefter?
Avatar billede busschou Praktikant
08. maj 2005 - 19:49 #3
1)
Insert Into bruger (felt1, felt2, ...) Values (værdi1, værdi2, ...)
2)
Select Id From bruger Where felt1 = værdi1, felt2 = værdi2, ...
$ID = mysql_result($query,0)
3)
Insert Into login (id, felt1, felt2,...) Value ($ID, værdi1, værdi2...)
Avatar billede busschou Praktikant
08. maj 2005 - 19:49 #4
Sådan du mener?
Avatar billede coderdk Praktikant
08. maj 2005 - 19:53 #5
1) insert into dintabel
2) mysql_insert_id() http://dk2.php.net/mysql_insert_id
3) insert into andentabel med id fra 2)
Avatar billede busschou Praktikant
08. maj 2005 - 19:59 #6
coderdk >> taget fra siden
--
Note:  Because mysql_insert_id() acts on the last performed query, be sure to call mysql_insert_id() immediately after the query that generates the value.
--
Hvad vil der ske hvis to brugere opretter sig næsten simultant? Så vil den ene oprettes i brugertabellen og inden id´et fanges vil den anden oprettes. Dernæst vil id´et blive fanget som anden brugers id og indsættes. Til sidst vil id´et igen hentes som det samme og der vil opstå en konflikt fordi det allerede er indsat.
Kan det ikke ske?
Avatar billede mulles.tk Nybegynder
08. maj 2005 - 20:04 #7
coderdk: sådan her...

mysql_query("INSERT INTO it_stud_bruger (....) VALUES (....)") or die(mysql_error());

$id = "mysql_insert_id()";

mysql_query("INSERT INTO it_stud_login (id) VALUES ('$id')") or die(mysql_error());
Avatar billede coderdk Praktikant
08. maj 2005 - 20:07 #8
Jeg tror nu ikke det kan ske. http://dev.mysql.com/doc/mysql/en/getting-unique-id.html siger at det er pr. connection, og at andre connections der indsætter ikke påvirker din connection.
Jeg har *aldrig* oplevet at den fejler, og jeg har brugt den i nogle ganske store setups! :)
Avatar billede coderdk Praktikant
08. maj 2005 - 20:08 #9
Nej:

mysql_query("INSERT INTO it_stud_bruger (....) VALUES (....)") or die(mysql_error());

$id = mysql_insert_id();

mysql_query("INSERT INTO it_stud_login (id) VALUES ('$id')") or die(mysql_error());
Avatar billede mulles.tk Nybegynder
08. maj 2005 - 20:08 #10
ahh oki, takker
Avatar billede coderdk Praktikant
08. maj 2005 - 20:08 #11
Man kan faktisk også bruge den i en query:

  SELECT LAST_INSERT_ID() AS sidsteid;
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