2011-04-16 12 views
5

oci_bind_by_name क्या है? मैं php के मैनुअल में पढ़ सकते हैं और नहीं कर सकते समझ में कुछ भी कृपया कोई यह मेरे लिएके लिए oci_bind_by_name क्या है?

नज़र इस उदाहरण को समझाने:

$name = "O'Reilly"; 
$stid = oci_parse($mycon, 'INSERT INTO CUSTOMERS (NAME) VALUES (:nm)'); 
oci_bind_by_name($stid, ':nm', $name, -1); 
oci_execute($stid); 

क्या -1 के लिए है?

+1

कृपया अब तक दिए गए उत्तरों की समीक्षा करें और या तो अपनी समस्या का समाधान करें या अपडेट करें और यह बताएं कि इनमें से कोई भी आपकी समस्या का समाधान क्यों नहीं करता है, इसलिए लोगों को उनके उत्तरों में सुधार करने का मौका है। धन्यवाद। – Gordon

उत्तर

9

यह नाम वाले पैरामीटर के लिए मान बांधता:

$name = "O'Reilly"; 
$stid = oci_parse($mycon, 'INSERT INTO CUSTOMERS (NAME) VALUES (:nm)'); 
oci_bind_by_name($stid, ':nm', $name, -1); 
oci_execute($stid); 

तो जब आप उस क्वेरी :nm चलाने O'Reilly हो जाएगा। -1 का मतलब है, बाध्य मान चर के रूप में लंबे समय तक होना चाहिए। यह डिफ़ॉल्ट मान है। आपको इसे सेट करने की ज़रूरत नहीं है। जब तक आप केवल मौजूदा चर बाध्यकारी हैं, आपको परेशान करने की आवश्यकता नहीं है।

आप क्योंकि

बाध्यकारी डेटाबेस बयान के संदर्भ और caches from previous executions of the statement पुनः उपयोग कर सकते हैं, भले ही किसी अन्य उपयोगकर्ता या प्रक्रिया मूल रूप से यह निष्पादित इस विधि का उपयोग करना चाहते हैं। बाध्यकारी SQL Injection चिंताओं को कम करता है क्योंकि बाइंड वैरिएबल से जुड़े डेटा को SQL कथन का हिस्सा कभी नहीं माना जाता है। इसे उद्धरण या भागने की आवश्यकता नहीं है।

जो इसका मतलब है अधिक सुरक्षित है और बेहतर प्रदर्शन है।

+0

तो यह 'mysql_escape_real_string' जैसा है? और इस उदाहरण को देखें '$ name = "O'Reilly"; $ stid = oci_parse ($ mycon, 'ग्राहकों में शामिल करें (NAME) मूल्य (: एनएम)'); oci_bind_by_name ($ stid, ': nm', $ name, -1); oci_execute ($ stid); '' -1' के लिए क्या है? – user700792

+0

@user नहीं, यह 'mysql_real_escape_string' जैसा नहीं है। यह 'mysqli_stmt_bind_param' या' पीडीओ :: तैयार 'की तरह है। '-1' अधिकतम लंबाई के लिए डिफ़ॉल्ट मान है जो पैरा मान हो सकता है। इसका मतलब है "जब तक मूल्य है"। – Gordon

0

oci_bind_by_name विधि यह निर्दिष्ट कर रही है कि: nm "O'Reilly" -1 डिफ़ॉल्ट मान है ... इसलिए परेशान करने की आवश्यकता है। यदि आप अन्य मान निर्दिष्ट कर रहे हैं जो इस विधि को मूल्य की लंबाई रखने के लिए बताएगा: एनएम।

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