Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] Nie działające zapytanie
Forum PHP.pl > Forum > Przedszkole
koszar93
Witam,
mam sobie ifa a w nim dwa polecenia UPDATE i wyświetlanie napisu
  1. if($zap2['id'] == $zap['id'])
  2. {
  3. print($zap2['accid']); ///wyswietla dobre id
  4. $SQL->query("UPDATE `accounts` SET `premium_points`=`premium_points`+100 WHERE `id` = ".$zap2['accid'].";"); /// nie działa :/
  5. $SQL->query('UPDATE `smswin` SET `pkt`=1 WHERE `id` = '.$zap2['id'].' LIMIT 1'); /// działa za każdym razem
  6. echo 'PUNKTY ZOSTALY DODANE!!!'; /// to samo co wyżej
  7. }

Po wpisaniu w bazie danych tego zapytania punkty dodają się tylko w tym skrypcie nie chcą się dodać...
Męczę się z tym od rana i nie mam już pomysłów.
Potter125
Wywal średnik z zapytania

koszar93
Wywaliłem i dalej nie dodaje.
korex
  1. IF($zap2['id'] == $zap['id'])
  2. {
  3. print($zap2['accid']); ///wyswietla dobre id
  4. $SQL->query("UPDATE `accounts` SET `premium_points`=premium_points + 100 WHERE `id` = ".$zap2['accid'].";"); /// nie działa :/
  5. $SQL->query('UPDATE `smswin` SET `pkt`=1 WHERE `id` = '.$zap2['id'].' LIMIT 1'); /// działa za każdym razem
  6. echo 'PUNKTY ZOSTALY DODANE!!!'; /// TO samo co wyżej
  7. }
koszar93
Dalej nie działa :/
Magic WWW
Nie ogarniam Panów korex oraz Potter125 na przyszły raz jak nie wiecie jak pomóc to nie pomagajcie w ogóle smile.gif
  1. if($zap2['id'] == $zap['id'])
  2. {
  3. print($zap2['accid']);
  4. $SQL->query("UPDATE `accounts` SET `premium_points`=`premium_points`+100 WHERE `id`={$zap2['accid']}");
  5. $SQL->query("UPDATE `smswin` SET `pkt`=1 WHERE `id`={$zap2['id']} LIMIT 1");
  6. echo 'PUNKTY ZOSTALY DODANE!!!'; /// to samo co wyżej
  7. }


Jeśli nadal nie będzie działać po nie działającym zapytaniu daj:
  1. echo $SQL -> error;


(nie wiem z jakiej biblioteki MySQL korzystasz tak więc chodzi o wyświetlenie błędu smile.gif)
koszar93
Zapytanie nadal nie działa.

Dałem to co kazałeś po nie działającym zapytaniu jednak nic się nie wyświetliło.
Magic WWW
Tak wiec upewnij się, że:
- Tabela `accounts` istnieje
- Kolumna `premium_points` istnieje
- Wpis o podanym identyfikatorze istnieje

Powiedz mi jeszcze z jakiego rozszerzenia do MySQL korzystasz? Nie przypadkiem MySQLi? Jeszcze jedno, co Ci wyświetla funkcja print()?
melkorm
Przypięty temat: Jak Poprawnie Zadać Pytanie.
Potter125
Cytat("Magic WWW")
Nie ogarniam Panów korex oraz Potter125 na przyszły raz jak nie wiecie jak pomóc to nie pomagajcie w ogóle


Cytat
Zapytanie nadal nie działa.



I co? - głupio Ci?

W ogóle sama konstrukcja

  1. echo 'PUNKTY ZOSTALY DODANE!!!'; /// to samo co wyżej


jest nonsensowna, ponieważ jeśli zapytanie nie wykona się, to i tak wyświetli że dodał punkty, czyli poda błędną informację.

Nie mniej jednak sama konstrukcja jest nie logiczna + nazewnictwo zmiennych na nic nie wskazuje. Nie wiemy jak dane są przekazywane, czy jest to stała zdefiniowana, czy może pobierasz coś z GET albo POST. Wklej cały skrypt albo nie wklejaj w ogóle. A najlepiej zapoznaj się z podstawami programowania, bo już takie początki nie wróżą nic dobrego.
koszar93
Dodam, że po wpisaniu ręcznie:
  1. $SQL->query("UPDATE `accounts` SET `premium_points`=premium_points + 100 WHERE `id` = 7222646;"); /// nie działa :/

zapytanie się nadal nie wykonuje. Natomiast jeśli wpiszę
  1. echo 'UPDATE `accounts` SET `premium_points`=premium_points + 100 WHERE `id` = ".$zap2['accid']." ';

$zap2['accid'] wyświetla dobre id i po wpisaniu tego zapytania w bazie dancyh w zakładce SQL komenda działa poprawnie.

print($zap2['accid']) wyświetla dobre id.
korex
Jak wykonasz
  1. UPDATE `accounts` SET `premium_points`= premium_points + 100 WHERE `id` = '7222646';

z phpmyadmina to dziala?
koszar93
@up
Tak.
korex
  1. if($zap2['id'] == $zap['id'])
  2. {
  3. print($zap2['accid']); ///wyswietla dobre id
  4. $SQL->query('UPDATE `accounts` SET `premium_points` = premium_points + 100 WHERE `id` = '.$zap2['accid'].'; '); /// nie działa :/
  5. $SQL->query('UPDATE `smswin` SET `pkt`=1 WHERE `id` = '.$zap2['id'].';'); /// działa za każdym razem
  6. echo 'PUNKTY ZOSTALY DODANE!!!'; /// to samo co wyżej
  7. }

a tak?
koszar93
Nie działa.
mortus
Zamień odpowiednią linijkę na to i sprawdź, czy pojawi się błąd:
  1. $SQL->query('UPDATE `accounts` SET `premium_points` = `premium_points` + 100 WHERE `id` = '.$zap2['accid']) or die(mysql_error());
Magic WWW
Może problem leży w źle wybranej bazie danych (mysql_select_db)? Bo jeśli nie tego jest to wina to już nie mam pomysłów. Potter125 głupio to może być tu tylko i wyłącznie tobie, twoje rozwiązanie problemu jest wręcz wspaniałe.
koszar93
Cytat(mortus @ 30.06.2011, 10:44:11 ) *
Zamień odpowiednią linijkę na to i sprawdź, czy pojawi się błąd:
  1. $SQL->query('UPDATE `accounts` SET `premium_points` = `premium_points` + 100 WHERE `id` = '.$zap2['accid']) or die(mysql_error());

Nie pojawił się żaden błąd.

Baza jest dobrze wybrana ponieważ inne zapytania w tym skrypcie działają bez zarzutów.

var_dump($zap2['accid']) -> string(7) "7222646", id dobre.
Próbowałem także zmienić tą zmienną na int = ".(int) $zap2['accid']." -> nie działa
Magic WWW
Hmm może problem jest w polu `premium_points`? Jaki jest typ tej kolumny? Prawodłowo musi być liczba całkowita (int)
koszar93
premium_points - int(11)
W innych skryptach to zapytanie działa ...
Magic WWW
Okej powiedz mi teraz z jakiego rozszerzenia MySQL korzystasz? MySQLi czy coś innego?
koszar93
Rozszerzenie PHP: mysqli
Spróbowałem teraz tak zrobić:
  1. $punkty = $account_logged->getCustomField("premium_points")+1000;
  2. $account_logged->setCustomField("premium_points",$punkty);
  3. print($punkty);

i print($punkty) -> wyświetlają prawdziwą ilość punktów po dodaniu jednak ich nie dodaje.
Magic WWW
  1. $SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` + 100 WHERE `id`={$zap2['accid']}") or die($SQL -> error);
koszar93
Żadnego błędu.
Magic WWW
  1. $result = $SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` + 100 WHERE `id`={$zap2['accid']}");
  2. var_dump($result);


Napisz co Ci zwraca wink.gif
koszar93
  1. object(PDOStatement)#7 (1) { ["queryString"]=> string(82) "UPDATE `accounts` SET `premium_points` = `premium_points` + 100 WHERE `id`=7222646" }
thek
Więcej debugu własnego... Jak na razie większość Twoich postów to podanie w kodzie rozwiązań innych osób i komentarz "Nie działa". To zaczyna wyglądać jak czekanie na gotowca. Jeszcze jeden, dwa takie posty i zamknę temat, bo od siebie nie robisz nic niemal, tylko czekasz aż Ci podadza rozwiązanie jak na tacy. Patrzyłeś chociaż do tematu "Jak zadać pytanie"? tam jest debug opisany.
koszar93
Napisałem to od nowa w inny sposób i działa.

Do zamknięcia.
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.