Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] PDO UPDATE tylko tego co wysłano.
Forum PHP.pl > Forum > Przedszkole
uncuncunc
Czy jest jakiś sposób aby aktualizować tylko to co istnieje/zostało zmienione? Zakładając że chce uaktualnić 2 pola w bazie, to robię tak:

  1. prepare('UPDATE user SET imie=:imie, nazwisko:nazwisko WHERE id=:id');
  2. $uUser -> bindValue(':id', $id, PDO::PARAM_INT);
  3. $uUser -> bindValue(':imie', $_POST['imie'], PDO::PARAM_STR);
  4. $uUser -> bindValue(':nazwisko', $_POST['nazwisko'], PDO::PARAM_STR);


Tylko co w przypadku, gdy nie prześlę nazwiska, bo np. nie jest wymagane? A chciałbym aby dokonał się update imienia?
abort
No tak... A pomyślałeś nad tym, że takie "pseudooszczędzanie" bazy to katorga dla wsszystkiego innego?
1. Obciążasz siebie - bo musiałbyś napisać kod, który sprawdza, co aktualizować, a co nie
2. Obciąża CPU - w końcu to CPU wykonuje ten kod

A wszystko dla pseudooszczędności - celowo napisałem "pseudo", bo i tak aktualizujesz jeden rekord, więc nie ma wielkiego znaczenia, czy aktualizujesz jedno pole w tym rekordzie, czy 10.
Mógłbym (ewentualnie) jeszcze zrozumieć, gdybyś chciał oszczędzić bazę przez sprawdzenie, czy cokolwiek zostało zmodyfikowane (czy wartości z bazy i z POST są różne). Ale dla jednego pola w rekordzie? Bez jaj... smile.gif
uncuncunc
abort - tylko że jak nie wyślę nazwiska postem, to update do bazy się nie wykona jak jest podane cokolwiek przez bindowanie, to musi być. Poza tym ,to był tylko przykład, tych pól jest znacznie więcej, chodzi o sam sposób. JAK to zrobić, aby działało bez znaczenia czy podpięta wartość istnieje czy nie.
abort
Czegoś chyba nie rozumiem, więc może powiem, co zrozumiałem i wiem:

1. Masz określony formularz
2. wyświetlasz go celem aktualizacji
3. Znasz więc pola (WSZYSTKIE!)
4. Konstruujesz instrukcję do bazy, by uaktualniła wszystkie pola

Jedyny "problem", jaki możesz znaleźć, to fakt, że $_POST['pole'] nie będzie istnieć, jeśli w formularzu odpowiednie pole nie zostanie wypełnione. Tu z pomocą przychodzi isset i instrukcje warunkowe - zakładam, że umiesz z nich korzystać.

W czym Ty widzisz problem? Tylko łopatologicznie, pliz.
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.