Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Update rekordów, a późniejsze wyciąganie ich z bazy
Forum PHP.pl > Forum > Przedszkole
Dapi
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 smile.gif
roghatt
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 ?
Dapi
Nie nie nie 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.
CuteOne
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
Dapi
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.
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.