Sie verwenden einfache Anführungszeichen in Ihrer Einfügeanweisung :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Mit diesen einfachen Anführungszeichen $comm
werden nicht ausgewertet -- und das wörtliche $comm
Zeichenfolge an die Datenbank gesendet -- was zu etwas führt, das Sie wahrscheinlich nicht ganz erwarten.
Wenn Sie möchten, dass Variablen interpoliert werden, sollten Sie doppelte Anführungszeichen um Ihren String
.
Aber da Sie versuchen, vorbereitete Anweisungen zu verwenden, sollten Sie das nicht tun , eigentlich.
Stattdessen sollten Sie Platzhalter in der Anweisung verwenden -- und diese dann beim Ausführen der Anweisung an Ihre Daten binden.
Ihre prepare
würde ungefähr so aussehen, nehme ich an:
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Beachten Sie den :comm
, :pID3
, und :cID
Platzhalter.
Und dann, wenn Sie die Anweisung ausführen, übergeben Sie tatsächlich einige echte Daten, um den Platzhaltern zu entsprechen:
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Zusätzlicher Hinweis:Da Sie vorbereitete Anweisungen verwenden, müssen Sie mysql_real_escape_string()
nicht verwenden (Das ist übrigens keine PDO-bezogene Funktion und sollte nur verwendet werden, wenn mit mysql_*
gearbeitet wird Funktionen) :Das Entkommen wird vom vorbereiteten Anweisungsmechanismus selbst behandelt.