Du bruger enkelte anførselstegn i din insert-sætning :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Med disse enkle citater, $comm
vil ikke blive evalueret -- og den bogstavelige $comm
streng vil blive sendt til databasen -- hvilket resulterer i noget, du sandsynligvis ikke helt forventer.
Hvis du ønsker, at variabler skal interpoleres, skal du bruge dobbelte anførselstegn omkring din streng
.
Men da du prøver at bruge forberedte udsagn, er det ikke det, du skal gøre , faktisk.
I stedet bør du bruge pladsholdere i sætningen -- og bind dem derefter til dine data, når du udfører sætningen.
Din prepare
ville se lidt sådan her ud, formoder jeg :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Bemærk :comm
, :pID3
og :cID
pladsholdere.
Og så, når du udfører sætningen, sender du faktisk nogle rigtige data, der svarer til pladsholderne :
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Yderligere bemærkning:da du bruger forberedte sætninger, behøver du ikke at bruge mysql_real_escape_string()
(som ikke er en PDO-relateret funktion, BTW, og bør kun bruges, når du arbejder med mysql_*
funktioner) :undslippelsen håndteres af den forberedte erklæringsmekanisme selv.