Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Ktora droga przekazac dane
-sepuku-
post 16.10.2007, 22:42:26
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?
Go to the top of the page
+Quote Post
templar
post 16.10.2007, 23:14:16
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.

  1. <?php
  2. $f = @mysql_query('SELECT `id` FROM `table` WHERE `name` = "'.$name.'" LIMIT 1');
  3. $c = @mysql_num_rows($f);
  4.  
  5. if($c == 0) // nie mamy rekordu
  6. else // mamy rekord
  7. ?>


Pozdrawiam.
Go to the top of the page
+Quote Post
-sepuku-
post 16.10.2007, 23:58:05
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.
Go to the top of the page
+Quote Post
Darti
post 17.10.2007, 00:11:38
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
Go to the top of the page
+Quote Post
nevt
post 17.10.2007, 10:29:46
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... -
Go to the top of the page
+Quote Post
-sepuku-
post 18.10.2007, 10:51:26
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.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:42