wstawianie do dwóch tabel

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:

	$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.

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

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..!?

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:

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1