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.