![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 238 Pomógł: 1 Dołączył: 27.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mam tabele bazy danych z kilkoma polami: id, imie, nazwisko, telefon
Gdy chcę zmodyfikować dany rekord to wyświetla mi się formularz z wpisanymi tam danymi rekordu, które mogę modyfikować. Raz mogę chcieć zmienić samo pole imie, raz np. wszystkie pola. I teraz w zapytanie UPDATE muszę za każdym razem modyfikować wszystkie pola, mimo, że zmieniłem tylko jedno? Przez formularz przesyłane są ponownie wszystkie pole przez $_POST, więc nie mogę sprawdzić, które pola zostały zmodyfikowane, bo za każdym razem przesłane zostaną wszystkie. Czy jest jakiś mechanizm, który sprawdza, które pola naprawde zostały zmienione, a które nie? Czy też mam się tym w ogóle nie przejmować i updatować wszystkie pola, bo na wydajności nie wiele się straci? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jedno zapytanie UPDATE nie jest aż tak pamięciożerne, tym bardziej jeśli są to bardzo małe ilości danych. Zapisywanie tylko zmienionych pól może czasem być niepożądane np. w sytuacji, gdy równolegle z Tobą ktoś inny edytuje te same dane. Załóżmy taką sytuację:
1. Otwierasz panel edycji. 2. Sekundę po tobie panel otwiera także inny adminsitrator. 3. Administrator ten zmienia wszystkie pola i je wysyła. 4. Sekundę po nim ty wysyłasz tylko dwa zmienione pola. Jeśli opracowałbyś jakiś mechanizm zmiany tylko i wyłącznie tych pól, do których została wpisana inna treść niż ta wyciągnięta z bazy, to po zapisie swojego formularza widniałyby tylko dwa "twoje" pola, a reszta miałaby treść zapisaną przez drugiego administratora. Sam zdecyduj, czy takie rozwiązanie byłoby pożądane. Mógłbyś też sprawdzać, które pola zostały zmienione najpierw poprzez wykonanie zapytania SELECT i porównanie wysłanych wartości z obecnymi wartościami w bazie - ale to już są dwa zapytania. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.06.2025 - 13:52 |