Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] PDO UPDATE tylko tego co wysłano.
uncuncunc
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 1.04.2012

Ostrzeżenie: (0%)
-----


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?

Ten post edytował uncuncunc 8.09.2012, 12:45:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
abort
post
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


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... (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
uncuncunc
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 1.04.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
abort
post
Post #4





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 12:18