Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] UPDATE w pętli
kamilo818
post 15.10.2014, 10:47:49
Post #1





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

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


Wydawało mi się to nie skomplikowane, ale niestety mam problem.
  1. sql2 = "SELECT * FROM zamowienia_produkty WHERE id_zamowienia='$id'";
  2. $result2 = mysql_query($sql2);
  3.  
  4. while ($row2 = mysql_fetch_array($result2)) {
  5. if($new_stat==='anulowano'){
  6. $oddaj = $row2['ilosc'];
  7. $id = $row2['id_produktu'];
  8. $kolor = $row2['kolor'];
  9. $rozmiar = $row2['rozmiar'];
  10. echo $oddaj.' '.$id.' '.$kolor.' '.$rozmiar;
  11. mysql_query("UPDATE produkty_info SET ilosc=ilosc+$oddaj WHERE id='$id' AND kolor='$kolor' AND rozmiar='$rozmiar'");
  12. }
  13. }


Chce zeby ilosci produktów wracały na stan gdy zamówienie osiągnie status 'anulowano'.
Zaden błąd się nie wyświetla a UPDATE sie nie wykonuje poprawnie tj. jak jest kilka rekordów to tylko 1 sie uploaduje.

Co może być nie tak?
Go to the top of the page
+Quote Post
Turson
post 15.10.2014, 10:59:42
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jesteś pewny, że zapytanie zwraca więcej niż 1 rekord?
Go to the top of the page
+Quote Post
kamilo818
post 15.10.2014, 11:14:38
Post #3





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

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


Tak.

Gdy jest 1 rekord to poprawnie działa ten kod.
Problem pojawia się gdy jest więcej rekordów

Ten post edytował kamilo818 15.10.2014, 11:16:52
Go to the top of the page
+Quote Post
Turson
post 15.10.2014, 11:27:03
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Proponuję wyświetlić treść każdego zapytania i przejrzeć jak to wyglada
Go to the top of the page
+Quote Post
kamilo818
post 15.10.2014, 13:24:56
Post #5





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

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


W koncu sie dopatrzyłem. Wszytko jest ok.
Okazało się że nie mam takiego elementu w bazie i nie miał co updatować po prostu.
W bazie miałem kolor: biały a w zapytaniu: kolor=białe

Chciałbym na przyszłość się zabezpieczyć przed tym i jak update sie nie uda zeby wywlał komunikat.

Zrobiłem coś takeigo:

  1. while ($row2 = mysql_fetch_array($result2)) {
  2. if($new_stat==='anulowano'){
  3. $oddaj = $row2['ilosc'];
  4. $id = $row2['id_produktu'];
  5. $kolor = $row2['kolor'];
  6. $rozmiar = $row2['rozmiar'];
  7.  
  8.  
  9. $sql = "UPDATE produkty_info SET ilosc=ilosc+$oddaj WHERE id='$id' AND kolor='$kolor' AND rozmiar='$rozmiar'";
  10. $result = mysql_query($sql);
  11.  
  12. if(!$result) {
  13. echo 'brak elementu w bazie';
  14. }
  15.  
  16.  
  17. }


Ale nie działa. W każdym przypku $result jest true nawet jak update sie nie uda.

Co to zmienic?
Go to the top of the page
+Quote Post
viking
post 15.10.2014, 14:27:12
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Zrób var_dump($result); dla niepowodzenia i zobacz co masz. Dla poleceń zmieniających mysql_query zwraca true/false.


--------------------
Go to the top of the page
+Quote Post
nospor
post 15.10.2014, 14:41:02
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




brak rekordow spelaniajacych warunek w UPDATE to dla mysql nie jest zadne niepowodzenie. mysql_query zawsze zwroci ci TRUE dla zapytan UPDATE ( nie liczac przypadku bledu bazy/zapytania)
By sprawdzic ile zmodyfikowano rekordow masz uzyc:
http://pl1.php.net/manual/en/function.mysq...fected-rows.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 13.07.2025 - 12:41