U gebruikt enkele aanhalingstekens in uw insert-statement :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Met die simpele aanhalingstekens, $comm
wordt niet geëvalueerd -- en de letterlijke $comm
string wordt naar de database gestuurd -- wat resulteert in iets dat je waarschijnlijk niet helemaal verwacht.
Als u wilt dat variabelen worden geïnterpoleerd, moet u dubbele aanhalingstekens rond je string
.
Maar, aangezien u voorbereide verklaringen probeert te gebruiken, is dat niet wat u zou moeten doen , eigenlijk.
In plaats daarvan moet u tijdelijke aanduidingen gebruiken in de verklaring -- en koppel deze vervolgens aan uw gegevens bij het uitvoeren van de instructie.
Uw prepare
zou er ongeveer zo uitzien, denk ik :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Let op de :comm
, :pID3
, en :cID
tijdelijke aanduidingen.
En dan, bij het uitvoeren van de instructie, geef je wat echte gegevens door, om overeen te komen met de tijdelijke aanduidingen:
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Aanvullende opmerking:aangezien u voorbereide instructies gebruikt, hoeft u mysql_real_escape_string()
niet te gebruiken (wat geen PDO-gerelateerde functie is, BTW, en alleen mag worden gebruikt bij het werken met mysql_*
functies) :het ontsnappen wordt afgehandeld door het voorbereide verklaringsmechanisme zelf.