Du använder enkla citattecken i din infogningssats :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Med dessa enkla citattecken, $comm kommer inte att utvärderas -- och bokstaven $comm sträng kommer att skickas till databasen -- vilket resulterar i något du förmodligen inte riktigt förväntar dig.
Om du vill att variabler ska interpoleras bör du använda dubbla citattecken runt din sträng
.
Men, när du försöker använda förberedda uttalanden, är det inte vad du bör göra , faktiskt.
Istället bör du använda platshållare i uttalandet -- och bind sedan dessa till dina data när du kör uttalandet.
Din prepare skulle se ut lite så här antar jag :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Notera :comm , :pID3 och :cID platshållare.
Och sedan, när du kör uttalandet, kommer du faktiskt att skicka några riktiga data, för att motsvara platshållarna :
$sth3->exekvera(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Ytterligare anmärkning:eftersom du använder förberedda satser behöver du inte använda mysql_real_escape_string() (som inte är en PDO-relaterad funktion, BTW, och bör endast användas när man arbetar med mysql_* funktioner) :flykten hanteras av den förberedda uttalandemekanismen själv.