Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Wprowadzanie danych do Mysql
Forum PHP.pl > Forum > Przedszkole
newmala
Zastanawiam się jak poprawnie powinno być skonstruowany cały proces zapisu danych do bazy?

Mam już pewne dane w bazie odnośnie klientów : nazwisko, imie, pesel, itp.
Jak się zabezpieczyć przed tym, aby powtórnie nie wprowadzić tego samego klienta do bazy?
Czy wystarczy sprawdzać w bazie czy już taki klient istnieje, np. po peselu?
Czy robi się jakies ograniczenia na tabeli, procedurki, indexy?




Wilwarin
najlepiej jakbyś zrobił osobny plik.php do którego przesyłasz dane z formularza poprzez POST a on po sprawdzeniu czy taki pesel już istnieje i po dodaniu go do bazy przekierowywuje spowrotem na stronę.
viking
unique index na peselu, przy próbie insertu baza powinna zwrócić wyjątek który przechwytujesz.
Wilwarin
index jest pewnie lepszym rozwiązaniem ale ja bym to zrobił w ten sposób (nie znam się na indexach sad.gif )
  1. $peselcheck = mysql_query("SELECT pesel FROM tabela WHERE pesel=".$pesel);
  2. $num_rows = mysql_num_rows($peselcheck);
  3. if($num_rows < 1){
  4. mysql_query("INSERT INTO...
  5. }
mmmmmmm
Użyj REPLACE zamiast INSERT
vermis
Cytat(mmmmmmm @ 20.09.2012, 11:49:48 ) *
Użyj REPLACE zamiast INSERT

To nie jest dobre rozwiązanie, bo sprawdza unikatowość primary key a pesel nie koniecznie musi nim być. Poza tym możesz nadpisać rekordy wstawiając losowe numery pesel, co nie jest raczej wskazane, bo znając twój pesel mógłbym ci zmienić np. nazwisko.
Rozwiązanie z indeksem jest lepsze. Chociaż najlepiej chyba sprawdzić czy wpis istnieje, a indeks jako dodatkowe zabezpieczenie. Tak czy inaczej indeks powinien być bo pesel nie ma prawa się powtórzyć (w teorii przynajmniej smile.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.