Você está usando aspas simples em sua instrução de inserção:
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Com essas aspas simples,
$comm
não será avaliado -- e o literal $comm
string será enviada para o banco de dados -- resultando em algo que você provavelmente não espera. Se você quiser que as variáveis sejam interpoladas, você deve usar aspas duplas em sua string .
Mas, como você está tentando usar declarações preparadas, não é isso que você deve fazer , na realidade.
Em vez disso, você deve usar marcadores de posição na declaração -- e, em seguida, vincule-os aos seus dados, ao executar a instrução.
Sua
prepare
ficaria um pouco assim, suponho:$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Observe o
:comm
, :pID3
e :cID
marcadores de posição. E, então, ao executar a instrução, você realmente passará alguns dados reais, para corresponder aos espaços reservados:
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Nota adicional:como você está usando instruções preparadas, você não precisa usar
mysql_real_escape_string()
(que não é uma função relacionada ao PDO, BTW, e deve ser usada apenas ao trabalhar com mysql_*
funções) :o escape é tratado pelo próprio mecanismo de instrução preparado.