Autor Zpráva
ssssa
Profil *
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
[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
vis s tim ID by bylo lepsi aby si to automaticky pridelovali v databasi... id(int)11 auto_increment unikatni
Alphard
Profil
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 *
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
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
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í.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: