2012-09-07 10 views
5

संभव डुप्लिकेट:
Php PDO::bindParam data types.. how does it work?पीडीओ: बाइंडिंग के दौरान data_type का उपयोग करने का क्या उद्देश्य है?

उदाहरण के लिए कहो, कि मैं निम्नलिखित तैयार बयान है:

$sth = $dbh->prepare('SELECT `name` FROM `user` WHERE `user_id` = :user_id'); 

मैं user_id पैरामीटर तो जैसे बाँध सकता है:

$sth->bindValue(':user_id', $user_id_value); 

और मैं अभी भी एसक्यूएल इंजेक्शन से सुरक्षित रहूंगा।

हालांकि, bindValue() डेटा_टाइप नामक एक वैकल्पिक पैरामीटर भी है, जो आपको एक स्पष्ट डेटा प्रकार सेट करने की अनुमति देता है। उदाहरण:

$sth->bindValue(':user_id', $user_id_value, PDO::PARAM_INT); 

इससे मुझे यह बताने की अनुमति मिलती है कि user_id एक पूर्णांक होगा।

मेरा प्रश्न है: bindValue में data_type पैरामीटर का उपयोग क्यों करें यदि आप एसक्यूएल इंजेक्शन के साथ या इसके बिना सुरक्षित हैं? क्या यह डेटा अखंडता को मजबूर करने के लिए है? यदि आप पहले से अपना डेटा मान्य कर रहे हैं, तो क्या आपको इसका उपयोग करने की चिंता करने की ज़रूरत है? क्या इसका उपयोग करने के लिए कोई अन्य लाभ है जिसके बारे में मैंने सोचा नहीं है?

उत्तर

-1

असल में - हाँ। डेटा_टाइप लागू करना एक अच्छी बात है।

इंजेक्शन के खिलाफ सुरक्षा न मानें - बहुत समय पहले मैंने बैक-टिक्स और उद्धरण के लिए utf8 कोड का उपयोग करके इंजेक्शन का विवरण देने वाला ब्लॉग पोस्ट देखा था और क्या नहीं; जो, बच निकले, जहां एकल पात्रों के रूप में मूल्यांकन किया गया और इसलिए इंजेक्शन की अनुमति दी गई।

कहना है कि इस को संबोधित नहीं किया गया है और न ही मैं कह रहा हूँ आप जोखिम रहता है है यही कारण है कि - बस यह सोचते हैं कभी कभी तो सबसे अच्छा होगा नहीं है कह रही है ...

+2

आप प्रश्न के किस हिस्से का जवाब करते हैं? मुझे अभी भी "यह अच्छी बात है" के अलावा कोई तर्क नहीं दिख रहा है, जो सभी – zerkms

+0

erm पर तकनीकी स्पष्टीकरण नहीं है ... आपने पूछा कि क्या डेटा प्रकार अखंडता को मजबूर करने के लिए यह है या नहीं। यदि आप इसका उपयोग नहीं करना चाहते हैं तो नहीं। मैं इसका उपयोग करता हूं क्योंकि मुझे प्रवर्तन की अतिरिक्त परत पसंद है। - हर छोटी मदद करता है [चूंकि मेथ उपयोगकर्ता कहेंगे] –

+1

मैं एक ओपी नहीं हूं। लेकिन फिर भी - "क्योंकि मुझे प्रवर्तन की अतिरिक्त परत पसंद है" - एक तकनीकी स्पष्टीकरण नहीं है। क्या आप कोई उदाहरण दे सकते हैं जहां प्रवर्तन की अतिरिक्त परत वास्तव में उपयोगी हो सकती है, और स्पष्ट प्रकार के विनिर्देश के साथ और बिना अंतर है? – zerkms

संबंधित मुद्दे