Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Update rekordów, a późniejsze wyciąganie ich z bazy
Dapi
post
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

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


Witam.
Od pewnego czasu w moich projektach zmagam się z problemem update'owania rekordów MySQL i późniejszego wyciągania ich z bazy.
W pliku mysql.php, odpowiedzialnym za łączenie z bazą, mam zapytanie wyciągające wszelkie informacje o użytkowniku z tabeli users.
Wszystko pięknie działa, jednak kiedy aktualizuję jakiś wpis, muszę ponownie wykonywać zapytanie wyciągające dane o użytkowniku,
bo poprzedni select wykonywany był przed aktualizacją i dostarcza stare dane.
Przy jednym zapytaniu nie ma to raczej wpływu na wydajność skryptu, ale jeśli zapytań mamy więcej, a strona ma wielu użytkowników,
może pojawić się problem (tak sądzę). Kompletnie bez sensu jest odświeżanie strony po aktualizacji danych. Teoretycznie mógłbym
przed wyświetlanie informacji sprawdzać, czy zostało wykonane zapytanie update'ujące i wyświetlać jej wartość $_POST, ale czy to jest
dobre rozwiązanie? Co o tym sądzicie? Jak sobie radzicie z tym problemem?
Pozdrawiam i czekam na nasze opinie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
roghatt
post
Post #2





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


ale skoro jednym zapytaniem wyświetlasz dane z bazy i później innym zapytaniem te dane modyfikujesz i one są podmieniane w bazie to jak za drugim razem może Ci ściągnąć dane przed aktualizacja mimo ze w bazie znajdują się już zmodyfikowane dane?
Chyba ze nie modyfikujesz dane w konkretnej tabeli, tylko modyfikując je wpisujesz je do innej tabeli ?

Ten post edytował freelinkz 8.07.2011, 14:45:59
Go to the top of the page
+Quote Post
Dapi
post
Post #3





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

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


Nie nie nie (IMG:style_emoticons/default/smile.gif)
Właśnie o to chodzi, że drugie zapytanie pobierające dane wyświetla dane zaktualizowane.
Tyle, że obecnie muszę wykonywać 3 zapytania (SELECT, UPDATE, SELECT), a chciałbym to ograniczyć do 2 zapytań.
Przy aktualizacji większej ilości tabel/rekordów liczba zapytań rośnie.
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Zastanów się czy pierwszy SELECT jest ci do czegoś potrzebny? Zamiast:

  1. $row = mysql_fetch_assoc(mysql_query("SELECT user_id FROM users WHERE login = '$login'");
  2.  
  3. mysql_query("UPDATE users SET dane = '$nowe_dane' WHERE user_id = '{$row['user_id']}'");
  4.  
  5. $row2 = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE login = '$login'");


wystarczy
  1. mysql_query("UPDATE users SET dane = '$nowe_dane' WHERE login = '$login' ");
  2.  
  3. $row2 = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE login = '$login'");


Przykład dość hipotetyczny - ale czasami zdarza się, że nie trzeba pobierać danych, które będzie się UPDATE'owało.

ps. polecam też przyjrzeć się temu

Ten post edytował CuteOne 8.07.2011, 15:49:56
Go to the top of the page
+Quote Post
Dapi
post
Post #5





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

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


Pierwszy select jest wykonywany za każdym razem zaraz po połączeniu z bazą.
Jak update'uję dane, to jest on zbędny, tyle, że nie mam raczej możliwość nie wykonywania go.
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: 23.08.2025 - 07:07