V příkazu insert používáte jednoduché uvozovky:
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
S těmito jednoduchými uvozovkami $comm
nebude hodnocení -- a doslovný $comm
řetězec bude odeslán do databáze – výsledkem je něco, co pravděpodobně úplně neočekáváte.
Pokud chcete, aby byly proměnné interpolovány, měli byste použít uvozovky kolem řetězce
.
Ale když se pokoušíte používat připravená prohlášení, neměli byste to dělat , vlastně.
Místo toho byste měli ve výpisu použít zástupné symboly -- a poté je při provádění příkazu spojte se svými daty.
Vaše prepare
by to vypadalo trochu takto, předpokládám :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Všimněte si :comm
, :pID3
a :cID
zástupné symboly.
A pak při provádění příkazu skutečně předáte nějaká skutečná data, aby odpovídala zástupným symbolům:
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Dodatečná poznámka:protože používáte připravené příkazy, nemusíte používat mysql_real_escape_string()
(což není funkce související s PDO, BTW, a měla by být použita pouze při práci s mysql_*
funkce) :útěk je řešen samotným připraveným výrokovým mechanismem.