Skocz do zawartości

aktualizacja lub zapisanie rekordu


remik09

Rekomendowane odpowiedzi

mam zapytanie

$dodaj_glos = mysql_query("UPDATE $glosy_tbl SET ilglosow = ('$ilglosow'+'1'), suma = ('$suma'+'$glos'), srednia = (('$suma'+'$glos')/('$ilglosow'+'1')) WHERE idopisu = '$idopisu' LIMIT 1");

ale mam z nim jeden problem, jesli idopisu nie istnieje to zapytanie sie nie wykona, jak zrobic ze jesli idopisu nie istnieje to zamiast UPDATE bylo INSERT INTO i zmienione zapytanie bo tak chyba niemoglo by pozostac wtedy ?

Odnośnik do komentarza
Udostępnij na innych stronach

auto increment mam ustawione na id a nie idopisu wiec chyba bedzie dzialac, zaraz poprobuje

edyt:

przy zapytaniu

$dodaj_glos = mysql_query("REPLACE INTO $glosy_tbl SET ilglosow = ('$ilglosow'+'1'), suma = ('$suma'+'$glos'), srednia = (('$suma'+'$glos')/('$ilglosow'+'1')) WHERE idopisu = '$idopisu' LIMIT 1");

wyskakuje mi

Something is wrong in your syntax obok 'WHERE idopisu = '83' LIMIT 1' w linii 1

Odnośnik do komentarza
Udostępnij na innych stronach

ale mam z nim jeden problem, jesli idopisu nie istnieje to zapytanie sie nie wykona, jak zrobic ze jesli idopisu nie istnieje to zamiast UPDATE bylo INSERT INTO

No jak zrobić - Może wysil te swoje szare komórki trochę myśl :)

Najpierw wykonujesz zapytanie wybierające i sprawdzasz czy już jest interesujący cię rekord:

SELECT ...

if(jest==0)

{

INSERT INTO .....

}

else

{

UPDATE ....

}

Instrukcja REPLACE się nie nadaje ponieważ w wypadku jeśli rekord o danym idopisu istnieje wstawi w jego miejsce nowy a nie dokona aktualizacji.

Instrukcja REPLACE działa dokładnie tak samo, jak instrukcja INSERT, z jednym wyjątkiem: jeżeli w tabeli istnieje już wiersz o wartości klucza głównego lub indeksu UNIQUE takiej samej, jak dla wiersza wstawianego, wiersz taki zostanie usunięty przed wstawieniem nowego. Instrukcja INSERT w takiej sytuacji pomija wstawienie nowego wiersza i generuje ostrzeżenie.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Mozna jeszcze inaczej , nie testowalem ale powinno byc szybciej

INSERT INTO ... VALUES( Id, ... ) --zalozenie Id unikalne

IF error=='duplicated id' THEN -- bo to znaczy ze juz jest (sorry ale nie znam errno na pamiec :D )

UPDATE ...

END IF

albo odwrotnie:

UPDATE ... WHERE ...

IF error=='not found' THEN

INSERT...

END IF

W obu wypadkach zaoszczedzamy czas potrzebny na wykonanie select'a

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności