Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][MSSQL][PHP]Problem z zapytaniem SQL
Konop857
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 2
Dołączył: 4.05.2011

Ostrzeżenie: (10%)
X----


  1. $zap1="UPDATE `user` SET `gold`='$gold + 50' WHERE `login`='$attacker'";
  2. mysql_query($zap1) OR die("<center>Wystapil blad AA1</center>" );
  3. $zap2="UPDATE `user` SET `gold`='$gold2 - 50' WHERE `login`='$defender'";
  4. mysql_query($zap2) OR die("<center>Wystapil blad AA2</center>" );

Otóż mam takie zapytanie, $gold i $gold2 wynoszą po 500 (pobieranie tych dwóch zmiennych działa i jest w drugim pliku).
Czyli powinno wyjść po tych zapytaniach 450 i 550 a w bazie danych zamiast zaktualizować 500,500 do 450,550 powstaje takie cudo 500-50,500+50
Dlaczego tak się dzieje?
Pole typu varchar,długość 8.
Dziwne bo w innym polu również varchar o długości 2 odejmowanie działa.
To działające zapytanie:
  1. $akcja = $dom;
  2. $pae = $pa - $akcja;
  3. $zap3="UPDATE `user` SET `pa`='$pae' WHERE `login`='$_SESSION[login]'";

$pa i $dom pobierane są w innym pliku i to działa
$akcja = $dom

Czemu odejmowanie mi nie działa ;/?
Go to the top of the page
+Quote Post
zamper
post
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 17
Dołączył: 11.12.2010
Skąd: Częstochowa

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


  1. $zap1="UPDATE `user` SET `gold`= gold + 50 WHERE `login`='$attacker'";
  2. mysql_query($zap1) OR die("<center>Wystapil blad AA1</center>" );
  3. $zap2="UPDATE `user` SET `gold`= gold - 50 WHERE `login`='$defender'";
  4. mysql_query($zap2) OR die("<center>Wystapil blad AA2</center>" );



Czemu umieszczasz zmienne $gold w zapytaniu i to jeszcze w apostrofach?!







Ten post edytował zamper 31.07.2011, 14:34:25
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Bo SQl traktuje to jako string. Aby działanie się wykonało usuń apostrofy:
  1. $zap2="UPDATE `user` SET `gold`=$gold2 - 50 WHERE `login`='$defender'";
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




'$gold + 50'
Naprawdę nie widzisz, że wkładasz tekst '500+50'? Tekst to tekst, a nie dodawanie

$pae = $pa - $akcja;
`pa`='$pae'
Tutaj też wkładasz tekst, ale ten tekst jest już wcześniej w php "wyliczony"

Cytat
Pole typu varchar,długość 8.

I co to za kretyński pomysł by z liczby robić VARCHAR?
Go to the top of the page
+Quote Post
Konop857
post
Post #5





Grupa: Zarejestrowani
Postów: 81
Pomógł: 2
Dołączył: 4.05.2011

Ostrzeżenie: (10%)
X----


Dziękuje!!!
Głowiłem się z tym i nie mogłem ogarnąć a wy powiedzieliście co i jak w trymiga buhauhauh
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: 30.08.2025 - 07:31