इस पोस्ट में रूप है:पीएचपी पीडीओ bindParam प्रकार प्रबंधन
$funcname->name= htmlentities($_POST['name']);
$funcname->insert();
इस वर्ग funcname पर समारोह डालने जो स्तंभ नामित नाम करने के लिए डेटा सम्मिलित होगा
$this->conn->beginTransaction();
$stmt = $this->conn->prepare("INSERT INTO nameTBL (name) values (:name)";
$stmt->bindParam(':name', $this->name, PDO::PARAM_INT);
if ($stmt->execute()) {
$this->conn->commit(); //This will save your changes
$this->conn->exec('UNLOCK TABLES ' . self::$table_name);
header('Location: ../');
exit();
} else {
$this->conn->rollBack(); //This will undo your changes
$this->conn->exec('UNLOCK TABLES ' . self::$table_name);
header('Location: ../');
exit();
}
अब सवाल यह है कि मैंने पीडीओ :: PARAM_INT सेट किया है जो वर्णों की अनुमति नहीं देनी चाहिए, बल्कि केवल पूर्णांक क्यों मैं डेटाबेस (तालिका) में पाठ पोस्ट करने में सक्षम हूं?
क्या कोई है कि मैं यहां बिंदपाराम पर डेटा प्रकार को अत्यधिक प्रतिबंधित कैसे कर सकता हूं।
अग्रिम धन्यवाद।
प्रिय लेकिन बिंदपाराम के साथ मुझे कोई त्रुटि नहीं मिलती है, बस टेक्स्ट मान डेटाबेस में आता है, यहां तक कि MySQL कॉलम पर टाइप भी टेक्स्ट है, इसे कथन निष्पादित नहीं करना चाहिए क्योंकि मैंने पीडीओ प्रकार को int में सेट किया है। तो क्या आपका मतलब है कि मैं bindValue का उपयोग करना चाहिए, कौन सा बेहतर और सुरक्षित है या दोनों समान हैं? – user3286490
'बिंदवेलु' और 'बिंदपाराम' समान नहीं हैं। दोनों समान रूप से "सुरक्षित" हैं, और दोनों क्वेरी में सम्मिलन के लिए इनपुट को साफ़ कर देंगे। दोनों के समान कार्य हस्ताक्षर हैं। आपके मामले में, आप बस 'बिंदपारा'' को 'बाइंडवेल' के साथ स्विच कर सकते हैं। दो कार्य ** ** ** पैरामीटर का अलग-अलग व्यवहार करते हैं। यदि आप केवल मामूली प्रश्न कर रहे हैं (यदि आप कभी भी संग्रहित प्रक्रियाओं का आह्वान नहीं करते हैं) तो 'bindValue' का उपयोग करें।यदि कॉलम टेक्स्ट प्रकार का है, ** ** ** पीडीओ :: PARAM_INT' का उपयोग न करें। ऐसा नहीं है कि यह कैसे काम करता है और यह उस उद्देश्य के लिए नहीं है। यदि आप एक पूर्णांक चाहते हैं, तो php में मजबूती करें (उपयोग '(int) $ variable')। –
$ stmt-> bindValue (': name', $ this-> नाम, पीडीओ :: PARAM_INT); ,,, जब मैं पाठ डालता हूं तो यह इसके बजाय (0) डालेगा ..? ठीक है? – user3286490