Autor Zpráva
Petr789
Profil *
Zdravím, s PHP začínám, mám script na zpracování dat z formuláře a nemůžu ani za boha přijít na to kde mám chybu.

$sql_zapis = "INSERT INTO posts (category,text) VALUES ('$_POST["kategorie"]','$_POST["text"]')";

mysqli_query ($db_spojeni, $sql_zapis);


Vždy mi to při zpracování vyhodí chybu - Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\PHPWebServer\http_docs\01\odeslani.php on line 30 (řádek 30 je ten s $sql_zapis...)

Vše ostatní jsem zkoušel a funguje - POST OK, podmínky co se vykonají před tímhle kódem OK, spojení s DB funguje, jen mi to prostě nejde zapsat do databáze a vyhodí to výše zmíněnou chybu. Pro pořádek ještě napíšu, že se tam odesílá celkem 9 sloupců, tedy ne jen ty dva, to jsem upravil aby to tady bylo přehlednější, ale to by snad nemělo mít vliv.
Asi je tam někde chyba, ale prostě nemůžu přijít na to kde.

Nepozná někdo ze zkušenějších nějakýho toho broučka? :)

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Keeehi
Profil
Takto to je správně:
$sql_zapis = "INSERT INTO posts (category,text) VALUES ('".$_POST["kategorie"]."','".$_POST["text"]."')";
Dej si ale pozor na ochranu!
Radek9
Profil
Uvozovky v uvozovkách…
$sql_zapis = "INSERT INTO posts (category,text) VALUES ('".$_POST["kategorie"]."','".$_POST["text"]."')"; 
Petr789
Profil *
Ještě doplnění, vyzkoušel jsem odesílat i tenhle kus (tedy konkrétně přesně tady tu verzi ořezanou jen na dva sloupce místo devíti) a chybu to háže stejnou, takže je zcela jistě nějaká chyba tady :)
Keeehi
Profil
Petr789:
Nechybí ti tak náhodou na předchozím řádku středník?
Petr789
Profil *
Aaa, díky, funguje to. Přesně jak jsem si myslel, chyba v uvozovkách, těčkách, střednících a tak, s tím ještě trochu bojuju, no to se časem podá :)
Petr789
Profil *
Jinak co si myslel s tím "Dej si ale pozor na ochranu!". Je tam něco co by se dalo bezpečnostně udělat líp? Stačí jen rámcově a já už si to najdu na internetu.
Keeehi
Profil
nemáš ošetřené proměnné $_POST["cokoliv"]; Tyto proměnné se dají lehce podvrhnout, takže je musíš předem ošetřit. Čti třeba tu.
fuckin
Profil
www.php.net/mysql_real_escape_string
Petr789
Profil *
Ok, našel jsem si tenhle článek kde je to dobře vysvětleno :) Pokud tomu teda dobře rozumím, tak řešením by mělo být, když do VALUES budu psát místo tohoto
'".$_POST["text"]."'

tohle
'".mysql_real_escape_string($_POST["kategorie"])."'

Což by mělo před provedením příkazu s databází upravit nebezpečný znaky na neškodnou podobu. Správně?

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: