Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: update różńych pół
Forum PHP.pl > Forum > Bazy danych > MySQL
maciu
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?
Denver
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.
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.