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

Problem z poleceniem UPDATE mysqli poprzez sprintf. Dlaczego nie działa?

VPS Starter Arubacloud
+1 głos
167 wizyt
pytanie zadane 16 czerwca 2016 w SQL, bazy danych przez artimal Gaduła (4,800 p.)

Witam, dlaczego moje polecenie UPDATE nie działa? Wydaje mi się, że jest z nim wszystko w porządku...
 

	$polaczenie->query(sprintf("UPDATE `stats` SET `source`=%d, `time`=%d, `scroll`=%d, `help`=%d, `dema`=%d, `beforeafter`=%d, `play1`=%d, `play2`=%d, `play3`=%d, `play4`=%d, `play5`=%d, `after1`=%d, `after2`=%d, `after3`=%d, `after4`=%d, `after5`=%d, `kuppan`=%d, `adam`=%d, `ableton`=%d, `roland`=%d, `waves`=%d, `slate`=%d, `api`=%d, `sennheiser`=%d, `izotope`=%d, `pasekmail`=%d, `pasekporadnik`=%d, `asekfacebook`=%d, `emailgit`=%d, `orderwanted`=%d, `height`=%d, `width`=%d, `lang`='%s', `waluta`='%s', `polecacz`=%d WHERE `id`=%d", $source, $time, $scroll, $help, $dema, $beforeafter, $play1, $play2, $play3, $play4, $play5, $after1, $after2, $after3, $after4, $after5, $kuppan, $adam, $ableton, $roland, $waves, $slate, $api, $sennheiser, $izotope, $pasekmail, $pasekporadnik, $pasekfacebook, $emailgit, $orderwanted, $height, $width, $lang, $waluta, $partner, $stats_id));

 

komentarz 17 czerwca 2016 przez efiku Szeryf (75,160 p.)

Słuchaj, nie idź tą drogą.

NIE UŻYWAJ czegoś takiego.

Już tłumaczę.

Dla Ciebie to wygląda super i "działa" jednakże wystarczy, że wejdę na Twoją stronę i zacznę się bawić. Wydobędę z bazy co tylko będę chciał, gdyż masz SQLInjection. 

Przeżuć się na coś nowoczesnego jak PDO i zbinduj te parametry w execute (Example #2)

 

komentarz 15 lipca 2016 przez artimal Gaduła (4,800 p.)
Efik, mam przed tym przecież przed takimi atakami: htmlentities i mysqli_real_escape_string.
komentarz 15 lipca 2016 przez efiku Szeryf (75,160 p.)

Rób jak chcesz, Twój kod, nie moja aplikacja, tylko później nie płacz ;)  
Ja mam bindowanie w PDO.

Dla Ciebie lepiej by się było uczyć PDO od początku z wiki, bo obecnie mysqli też nie znasz. (OOP czy Proceduralne hmm?) Włączmy myślenie, 2016 rok.

Tak, w szkołach ze standardami PHP są daleko w tyle. 

Pozdrawiam.

PS: Zapoznaj się z podstawowymi poleceniami SQL, manualem odnośnie sprintf, htmlentities i mysqli_real_escape_string. 

1 odpowiedź

+1 głos
odpowiedź 16 czerwca 2016 przez CzikaCarry Szeryf (75,340 p.)
Jednym z powodów może być to, że używasz %d. %d jest zarezerwowane dla liczb. Spróbuj użyć %s które jest zarezerwowane dla stringów.
komentarz 16 czerwca 2016 przez artimal Gaduła (4,800 p.)
Używam %d dla liczb całkowitych i '%s' dla stringów więc poprawnie.

Podobne pytania

0 głosów
1 odpowiedź 419 wizyt
pytanie zadane 11 lutego 2018 w PHP przez hemet2 Nowicjusz (180 p.)
+1 głos
1 odpowiedź 448 wizyt
0 głosów
2 odpowiedzi 495 wizyt

92,453 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...