Anda menggunakan tanda kutip tunggal dalam pernyataan sisipan Anda :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES($comm, $pID3, $cID)
');
Dengan kutipan sederhana itu, $comm
tidak akan dievaluasi -- dan literal $comm
string akan dikirim ke database -- menghasilkan sesuatu yang mungkin tidak Anda harapkan.
Jika Anda ingin variabel diinterpolasi, Anda harus menggunakan tanda kutip ganda di sekitar string Anda
.
Namun, saat Anda mencoba menggunakan pernyataan yang sudah disiapkan, bukan itu yang harus Anda lakukan , sebenarnya.
Sebaliknya, Anda harus menggunakan placeholder dalam pernyataan -- dan, kemudian, ikat itu ke data Anda, saat menjalankan pernyataan.
prepare
Your akan terlihat sedikit seperti ini, saya kira :
$sth3 = $pdo3->prepare('
INSERT INTO Comment (info, pID, cID)
VALUES(:comm, :pID3, :cID)
');
Perhatikan :comm
, :pID3
, dan :cID
placeholder.
Dan, kemudian, saat menjalankan pernyataan, Anda benar-benar akan melewatkan beberapa data nyata, agar sesuai dengan placeholder :
$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));
Catatan tambahan :karena Anda menggunakan pernyataan yang telah disiapkan, Anda tidak perlu menggunakan mysql_real_escape_string()
(yang bukan fungsi terkait PDO, BTW, dan hanya boleh digunakan saat bekerja dengan mysql_*
fungsi) :pelarian ditangani oleh mekanisme pernyataan yang disiapkan itu sendiri.