Vous utilisez des guillemets simples dans votre instruction d'insertion :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Avec ces simples guillemets, $comm
ne sera pas évalué -- et le littéral $comm
chaîne sera envoyée à la base de données -- résultant en quelque chose auquel vous ne vous attendez probablement pas tout à fait.
Si vous souhaitez que les variables soient interpolées, vous devez utiliser guillemets doubles autour de votre chaîne
.
Mais, comme vous essayez d'utiliser des instructions préparées, ce n'est pas ce que vous devriez faire , en fait.
Au lieu de cela, vous devez utiliser des espaces réservés dans la déclaration -- et, ensuite, les lier à vos données, lors de l'exécution de l'instruction.
Votre prepare
ressemblerait un peu à ça, je suppose :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Notez le :comm
, :pID3
, et :cID
espaces réservés.
Et, ensuite, lors de l'exécution de l'instruction, vous passerez en fait des données réelles, pour correspondre aux espaces réservés :
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Remarque supplémentaire :comme vous utilisez des instructions préparées, vous n'êtes pas obligé d'utiliser mysql_real_escape_string()
(qui n'est pas une fonction liée à PDO, BTW, et ne doit être utilisée que lorsque vous travaillez avec mysql_*
fonctions) :l'échappement est traité par le mécanisme d'instructions préparées lui-même.