Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak dodać ten sam ID w dwóch tabelach ?
sumar
post 3.07.2004, 19:04:36
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.01.2004

Ostrzeżenie: (20%)
X----


Witam

Mam takie dwa zapytania do bazy danych. Problem polega na tym, że nie wiem jak najprościej dodać od razu ten sam id do obu tabel. Tzn pierwsze zapytanie powoduje zapis danych i przydziela automatycznie id (auto_increment) w tabeli "users". I teraz jak od razu ten id dodać do drugiej tabeli "users_info" w polu IDuser. Czy da się to zapisać np. jako jeden INSERT, czy trzeba stosować SELECT po pierwszym dodaniu żeby wyciągnąć id danego użytkownika. questionmark.gif


  1. $query_user = mysql_query("INSERT INTO users (Act, Login, Passmd5, Email, Date_start, Date_login) VALUES ('5','$f_login','$f_pass','$f_email','$date','$date')");
  2.  
  3. $query_user_info = mysql_query("INSERT INTO users_info (IDuser, Company, Name, Surname, Address, Post, City,) VALUES ('$iduser','$f_company','$f_name','$f_surname','$f_address','$f_post')");
Go to the top of the page
+Quote Post
Dabroz
post 3.07.2004, 19:57:52
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 0
Dołączył: 1.11.2003
Skąd: Poland, Płock

Ostrzeżenie: (0%)
-----


mysql_insert_id" title="Zobacz w manualu PHP" target="_manual


--------------------
Go to the top of the page
+Quote Post
kicaj
post 3.07.2004, 22:11:33
Post #3





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


Podac jaki bedzie nastepny ID i dodac go wtedy w dwoch tabelach smile.gif


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
sumar
post 4.07.2004, 16:25:31
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.01.2004

Ostrzeżenie: (20%)
X----


dzięki

mysql_insert_id() świetnie się sprawuje.
Go to the top of the page
+Quote Post
Yarecki
post 4.07.2004, 18:59:01
Post #5





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 1.04.2004
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


Cytat(kicaj_ @ 2004-07-03 23:11:33)
Podac jaki bedzie nastepny ID i dodac go wtedy w dwoch tabelach smile.gif

Tutaj może pojawić się błąd jeśli dwóch, albo więcej, użytkowników próbuje wpisać coś do bazy równocześnie.


--------------------
Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
Go to the top of the page
+Quote Post
scanner
post 5.07.2004, 11:22:26
Post #6





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Błąd w rozumowaniu.
Skoro mamy user_id z pierwszej tabeli, to w drugiej mamy pola:
id, user_id pierwsze służy do identyfikacji rekordu w tabeli, drugi linkuje rekordy z dwu tabel.
Niewielki nadmiar danych nie przeszkadza a algorytm łatwiejszy i bardziej odporny na usterki.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
sumar
post 8.07.2004, 19:26:22
Post #7





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.01.2004

Ostrzeżenie: (20%)
X----


Tylko że ja musze dodać do dwóch tabel w tym samym czasie. Tzn. Jak użytkownik się zapisuje, i dlatego chciałem od razu znać id_user z pierwszej tabeli żeby był ten sam id_user w drugiej.

A w users_info mam kolumne id do identyfikacji wiersza, tylko że to jest auto_increment wiec nie jest wpisana w INSERT.

Teraz mam tak;

  1. $query_user = mysql_query("INSERT INTO users (Act, Login, Passmd5, Email, Date_start, Date_login) VALUES ('5','$f_login','$f_pass','$f_email','$date','$date')");
  2.  
  3. $iduser = mysql_insert_id();
  4.  
  5. $query_user_info = mysql_query("INSERT INTO users_info (IDuser, Company, Name, Surname, Address, Post, City,) VALUES ('$iduser','$f_company','$f_name','$f_surname','$f_address','$f_post')");



I dzięki temu mam od razu id z pierwszej tabeli, i wstawiam go jako IDuser.

Mam tylko pytanie, czy takie rozwiązanie jest bezpieczne, czy np jeśli ktoś wpisuje się w tym samym czasie to może pobrać jego id questionmark.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 02:14