Stai usando virgolette singole nella tua dichiarazione di inserimento :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Con quelle semplici virgolette, $comm
non verrà valutato -- e il letterale $comm
la stringa verrà inviata al database, risultando in qualcosa che probabilmente non ti aspetti.
Se vuoi che le variabili vengano interpolate, dovresti usare virgolette intorno alla stringa
.
Ma poiché stai cercando di utilizzare dichiarazioni preparate, non è quello che dovresti fare , in realtà.
Invece, dovresti utilizzare i segnaposto nell'istruzione -- e, quindi, associarli ai tuoi dati, durante l'esecuzione dell'istruzione.
Il tuo prepare
sarebbe un po' così, suppongo :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Nota il :comm
, :pID3
e :cID
segnaposto.
E, quindi, durante l'esecuzione dell'istruzione, passerai effettivamente alcuni dati reali, per corrispondere ai segnaposto:
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Nota aggiuntiva:poiché stai utilizzando istruzioni preparate, non è necessario utilizzare mysql_real_escape_string()
(che non è una funzione relativa a PDO, BTW, e dovrebbe essere usata solo quando si lavora con mysql_*
funzioni) :l'evasione è gestita dal meccanismo stesso dell'enunciato preparato.