आप अपने इन्सर्ट स्टेटमेंट में सिंगल-कोट्स का उपयोग कर रहे हैं:
$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()
का उपयोग करने की आवश्यकता नहीं है (जो एक पीडीओ-संबंधित फ़ंक्शन नहीं है, BTW, और इसका उपयोग केवल mysql_*
के साथ काम करते समय किया जाना चाहिए। कार्य) :भागने को तैयार कथन तंत्रवाद द्वारा ही निपटाया जाता है।