Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak dodać ten sam ID w dwóch tabelach ?
Forum PHP.pl > Forum > Bazy danych > MySQL
sumar
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')");
kicaj
Podac jaki bedzie nastepny ID i dodac go wtedy w dwoch tabelach smile.gif
sumar
dzięki

mysql_insert_id() świetnie się sprawuje.
Yarecki
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.
scanner
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.
sumar
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.