Está utilizando comillas simples en su declaración de inserción:
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Con esas comillas simples, $comm
no será evaluado -- y el literal $comm
la cadena se enviará a la base de datos, lo que resultará en algo que probablemente no esperas.
Si desea interpolar variables, debe usar comillas dobles alrededor de su cadena
.
Pero, como está tratando de usar declaraciones preparadas, eso no es lo que debe hacer , en realidad.
En su lugar, debe usar marcadores de posición en la declaración -- y, luego, vincúlelos a sus datos, al ejecutar la instrucción.
Tu prepare
se vería un poco así, supongo :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Tenga en cuenta el :comm
, :pID3
y :cID
marcadores de posición.
Y, luego, al ejecutar la declaración, en realidad pasará algunos datos reales, para corresponder a los marcadores de posición:
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Nota adicional:como está usando declaraciones preparadas, no tiene que usar mysql_real_escape_string()
(que no es una función relacionada con PDO, por cierto, y solo debe usarse cuando se trabaja con mysql_*
funciones) :el escape es tratado por el propio mecanismo de declaración preparada.