Autor | Zpráva | ||
---|---|---|---|
ssssa Profil * |
#1 · Zasláno: 31. 10. 2009, 10:49:56
Dobrý den, mám klasicky mysql dotaz na odeslání dat do db. Všechno běží bez problému, akorát když řetězec, který se má odeslat do db obsahuje např. ukázku kódu, tak mi to vypíše chybovou hlášku a nic se neodešle - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$id', '".$_POST["jmeno"]."', '".$_POST["email"]."', '".$_POST["web"]."', '$ip', ' at line 1
Příklad: Chci odeslat ukázku kódu do db - celý řětězec vypadá takto: [code]mysql_query("INSERT INTO komentar (clanek, jmeno, email, web, ip, os, prohlizec, text) VALUES('$id', '".$_POST["jmeno"]."', '".$_POST["email"]."', '".$_POST["web"]."', '$ip', '$os', '$prohlizec', '$textarea')") or die("Chyba SQL dotazu:" . mysql_error());[/code] Prosím o radu ... |
||
Mikeses Profil |
#2 · Zasláno: 31. 10. 2009, 10:52:46 · Upravil/a: Mikeses
[code]mysql_query("INSERT INTO komentar (clanek, jmeno, email, web, ip, os, prohlizec, text) VALUES('".$id."', '".$_POST["jmeno"]."', '".$_POST["email"]."', '".$_POST["web"]."', '".$ip."', '".$os."', '".$prohlizec."', '".$textarea."')") or die("Chyba SQL dotazu:" . mysql_error());[/code] |
||
Mikeses Profil |
#3 · Zasláno: 31. 10. 2009, 10:57:47
vis s tim ID by bylo lepsi aby si to automaticky pridelovali v databasi... id(int)11 auto_increment unikatni
|
||
Alphard Profil |
#4 · Zasláno: 31. 10. 2009, 11:06:26
ssssa:
Použijte funkci mysql_real_escape_string() pro ošetření vstupů. Váš kód je takhle navíc neošetřený proti sql injection. |
||
ssssa Profil * |
#5 · Zasláno: 31. 10. 2009, 12:25:01
Alphard:
> ssssa: > Použijte funkci mysql_real_escape_string() pro ošetření vstupů. Váš kód je takhle navíc neošetřený proti sql injection. Děkuji, už to funguje. Ješt jedna věc - musím to ošetřovat při každém zobrazení řětězce nebo stačí pouze při ukládání do db ? |
||
GeneralDv Profil |
#6 · Zasláno: 31. 10. 2009, 12:50:28
ssssa:
„Děkuji, už to funguje. Ješt jedna věc - musím to ošetřovat při každém zobrazení řětězce nebo stačí pouze při ukládání do db ?“ mysql_real_escape_string() - při vkládání nebo updatu - přidá zpětná lomítka stripslashes() - při výpisu - tim se odstraní zpětná lomítka |
||
Alphard Profil |
#7 · Zasláno: 31. 10. 2009, 13:01:13
GeneralDv:
„stripslashes() - při výpisu - tim se odstraní zpětná lomítka“ Ne, nic není potřeba odstraňovat. ssssa: Tahle konstrukce se používá při dosazovaní neošetřených dat do databázových dotazů, typicky u insertu, ale nesmíte na to zapomenout ani při selectu ve where podmínkách apod. Data vrácená databází se už neupravují. |
||
Časová prodleva: 14 let
|
0