wstawianie do dwóch tabel

wstawianie do dwóch tabel
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,

Mam dwie tabele:

  • klienci
  • naprawy

Mam również dwa modele, do obsługi odpowiednich tabel (klienci, naprawy).
I teraz mam taką sytuację, że:
- klient wypełnia formularz (swoje dane osobowe, które wskoczą do tabeli klienci),
- oraz dane dotyczące naprawy (do tabeli naprawy)
Jednak do tabeli naprawy musi jeszcze wskoczyć klient_id, aby móc powiązać naprawę z konkretnym klientem.

W kodzie wyglądałoby to tak:

Kopiuj
	$klient_id = $this->klientci->dodaj_klienta(); // dane pobierane z post'a
	$this->naprawy->dodaj_naprawe( $klient_id ); //pozostałe dane również z post'a

Jak pobrać id klienta, zaraz po jego dodaniu ? Znalazłam taką funkcję mysql_insert_id(), jednak tutaj może dojść do sytuacji, w której w tym samym czasie nastąpi zapytanie.. i co wtedy ?

W ogóle czy w taki sposób można to rozwiązać ? Czy może wykonuje się to inaczej, jeśli tak, to jak ?

Pozdrawiam anna.

noHuman
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Nie wiem jak to w kontekście "codeigniser" (bo jeszcze nie wiem co to ten cogniser) ale właśnie się taką funkcje stosuje więc raczej nie ma takiego problemu w przeciwieństwie do próby zastosowania "SELECT max(id)...." które czasem właśnie sprawia błędy

  • Rejestracja: dni
  • Ostatnio: dni
0

w dokumentacji pisze tak:

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.

więc to nie do końca chyba bezpieczne..!?

noHuman
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Jest bezpieczne, zwraca zawsze ostatnie id na połączenie jeśli zaraz po "insert" to zrobisz, no chyba że framework albo Ty w kodzie gdzieś po między insert a pobraniem id coś wstawicie, codeigniter powinien mieć w obiekcie odpowiedzi po zapytaniu insert jakieś pole z tym ID,

Szybkie przeglądnięcie googla:

Kopiuj
$id = $this->db->call_function('insert_id');  
$this->db->insert_id()
 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.