![]() |
![]() ![]() |
![]() |
-sepuku- |
![]()
Post
#1
|
Goście ![]() |
Chcialbym sie zapytac, ktory ze sposobow bedzie lepszy (bezpieczniejszy, wydajniejszy).
Skrypt przetwarzajacy potrzebuje informaji czy dany rekord jest w bazie (w tym czasie update), czy go jeszcze nie ma (insert), w takim razie przyszly mi 2 rozwiazania do glowy. W czasie budowania formularza, gdzie jest sporo pol, dodaje tez pola hidden z informacja czy byl rekord. W takim przypadku zlosliwi mogliby zmienic wartosci takich pol, skutkiem czego bylyby niepoprawnie dodane, uaktualnione dane w bazie. W drugim sposobie po prostu skrypt przetwarzajacy sprawdzalby czy istnieje w bazie rekord, minusem tego jest dodatkowe obciazenie bazy. Co w takim przypadku zrobic? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 13.09.2006 Skąd: Poland Ostrzeżenie: (0%) ![]() ![]() |
Obciążenie będzie niewielkie. Jeśli dobrze to napiszesz.
Pozdrawiam. |
|
|
-sepuku- |
![]()
Post
#3
|
Goście ![]() |
Gdyby byl to jeden rekord nie widzialbym w tym rozwiazaniu problemu, w gre wchodzi od 30 do 40 rekordow co moze tez nie jest tak wiele, ale nie jest to jeden rekord. Mysle, ze w czasie kiedy umieszczenie w hidden tych danych bedzie zbyt niebezpieczne, zastosuje to.
Dodam jeszcze, ze jaki kolwiek dostepo do edytowania tych danych jest po uprzedniej autoryzacji i otrzymaniu dostepu do strony. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
o ile dobrze zrozumiałem ...
Tak czy inaczej pytasz bazę o istnienie czegoś, różnica jedynie polega na tym, kiedy to robisz (przed lub po zbudowaniu formularza i go wysłaniu). Ja bym sprawdził po wysłaniu. -------------------- The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1 MySQL Client API version : 5.0.27 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
Widzę, że baza to MySQL.
Poszukaj i poczytaj o poleceniu REPLACE - działa jak INSERT + UPDATE - to znaczy dopisuje wiersze ale nadpisuje istniejące (gdy powiela sie wartość klucza podstawowego). Pozdrawiam. -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
-sepuku- |
![]()
Post
#6
|
Goście ![]() |
Dzieki za naprowadzenie, REPLACE nie zabardzo spelnia moje wymagania, gdyz musialbym kompletowac wszystkie dane chcac updatowac jedno pole.
Po drodze poszukiwan znalazlem: INSERT INTO slownik (haslo, znaczenie) VALUES('house', 'dom (budynek), rodzaj obiektu mieszkalnego.') ON DUPLICATE KEY UPDATE znaczenie=VALUES(znaczenie); Oznacza to, ze jesli zapytanie trafi na taka sama wartosc w polu haslo, ktore jest kluczem podstawowym nastapi update. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 20:42 |