Използвате единични кавички във вашия оператор за вмъкване:
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
С тези прости кавички, $comm
няма да се оценяват -- и литерала $comm
низ ще бъде изпратен до базата данни -- което ще доведе до нещо, което вероятно не очаквате съвсем.
Ако искате променливите да бъдат интерполирани, трябва да използвате двойни кавички около вашия низ
.
Но тъй като се опитвате да използвате подготвени изявления, това не трябва да правите , всъщност.
Вместо това трябва да използвате заместители в израза -- и след това ги обвържете с вашите данни, когато изпълнявате оператора.
Вашата prepare
би изглеждало малко по този начин, предполагам :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Обърнете внимание на :comm
, :pID3
и :cID
контейнери.
И след това, когато изпълнявате оператора, вие всъщност ще подадете някои реални данни, които да съответстват на контейнерите:
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Допълнителна забележка:тъй като използвате подготвени изрази, не е необходимо да използвате mysql_real_escape_string()
(което не е функция, свързана със PDO, BTW, и трябва да се използва само при работа с mysql_*
функции) :бягството се обработва от самия подготвен механизъм на изявление.