• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Warunki PHP + SQL

Object Storage Arubacloud
0 głosów
131 wizyt
pytanie zadane 30 stycznia 2019 w PHP przez daniel2k Obywatel (1,380 p.)
$query1 = "SELECT zboze FROM uzytkownicy WHERE zboze = '$zboze'"; 
$result1 = mysqli_query($con,$query1) or die ($mysqli->error); 
                        
 if($result1 = 12) {
 $sql1= ' UPDATE uzytkownicy SET zboze+zboze+100 WHERE id='.$_SESSION['id'].' ';
}else if($result1 = 13) {
$sql1= ' UPDATE uzytkownicy SET zboze+zboze+50 WHERE id='.$_SESSION['id'].' ';
}else{
echo "error";
}

Hej, nie potrafie znalezc przyczyny nie dzialania w/w kodu, kod ma za zadanie odczytanie wartosci kolumny po czym w zaleznosci od jej zawartosci 12 lub 13 przydziela odpowiedni pakiet.

2 odpowiedzi

+2 głosów
odpowiedź 30 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 30 stycznia 2019 przez daniel2k
 
Najlepsza

Nie wiem w jaki sposób to dokładnie ma działać i co to znaczy konkretnie dla Ciebie "nie działa", ale:

  • mysqli_query() nie zwraca gotowego wyniku zapytania, trzeba zrobić jeszcze fetch. Porównanie $result1 z jakąś cyfrą nie ma więc sensu.
  • No właśnie, porównanie. W linii 4 i 6 chyba chciałeś porównać, a porównanie to === lub == (z uwzględnieniem typu/bez), jedno = to przypisanie, więc te warunki nie mają sensu.
  • WHERE zboze = '$zboze' - jeśli wcześniej wartość $zboze przychodzi z zewnątrz i nie jest sprawdzana to jesteś narażony na atak sql injection podstawiając to w taki sposób, wszędzie podając wartości do zapytania należałoby je bindować.
  • Zapytanie ze zmiennej $sql1 nigdzie się nie wykonuje, to mam nadzieję wiesz (albo wykonuje się dalej, tylko tu tego nie pokazałeś).
  • A jak już jesteśmy przy tym zapytaniu, to jest ono błędne: SET zboze+zboze+50 - taki zapis spowoduje że będzie tam SET [jakaś liczba]. Trzeba podać dla jakiej kolumny ma daną wartość ustawić.
1
komentarz 30 stycznia 2019 przez daniel2k Obywatel (1,380 p.)
Bardzo dziękuję za wyczerpującą odpowiedź.
+2 głosów
odpowiedź 30 stycznia 2019 przez HaKIM Szeryf (87,590 p.)
Bo zamiast znaku porównania użyłeś znaku przypisania.

Nie if ($result = 1) a if ($result === 1)!

http://php.net/manual/en/language.operators.comparison.php

Podobne pytania

0 głosów
2 odpowiedzi 591 wizyt
pytanie zadane 4 listopada 2017 w PHP przez SzukającyPrzygód Bywalec (2,310 p.)
0 głosów
2 odpowiedzi 233 wizyt
pytanie zadane 13 kwietnia 2019 w PHP przez PanKonefka Nowicjusz (170 p.)
–1 głos
1 odpowiedź 284 wizyt
pytanie zadane 15 listopada 2016 w PHP przez ck Obywatel (1,780 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...