2012-03-19 3 views
28

फॉर्म :name से PDOStatement::bindParam() के नामित मानकों को पार करते समय, ऐसा लगता है कि अग्रणी कोलन का उपयोग किया जाता है या नहीं।क्या पैरामीटर नामों के लिए अग्रणी कोलन PDOStatement :: bindParam() वैकल्पिक में पास किया गया है?

अर्थात या तो इस:

$statement->bindParam(':name', $var); 

या इस:

$statement->bindParam('name', $var); 

काम करने के लिए लगता है।

यहाँ PDOStatement::bindParam()

पैरामीटर

पैरामीटर पहचानकर्ता के लिए दस्तावेज़ है। नाम प्लेसहोल्डर्स का उपयोग करके एक तैयार कथन के लिए, यह फ़ॉर्म का पैरामीटर नाम होगा: नाम। प्रश्न चिह्न प्लेसहोल्डर्स का उपयोग करके तैयार कथन के लिए, यह पैरामीटर की 1-अनुक्रमित स्थिति होगी।

क्या इसका मतलब है कि कोलन छोड़ा जा सकता है?

+0

मैं कहूंगा कि एसक्यूएल अभिव्यक्ति में कोलन की आवश्यकता है, लेकिन जब आप 'बिंदपाराम' के नाम से नाम (पहचान) नहीं करते हैं। पीडीओ फ़ंक्शन शायद यहां कम सख्त है क्योंकि यह पैरामीटर नाम देने के लिए अपने स्वयं के इंटरफ़ेस को परिभाषित कर सकता है। – hakre

उत्तर

26

नहीं, क्योंकि दस्तावेज़ीकरण इसका उल्लेख नहीं करता है, मुझे लगता है कि यह मानना ​​सुरक्षित है कि यह व्यवहार आधिकारिक रूप से समर्थित नहीं है और इस पर भरोसा नहीं किया जाना चाहिए।

हालांकि, यह वास्तव में काम करने के लिए होता है (कम से कम PHP 5.3.24 में) - आंतरिक रूप से एक कॉलन पैरामीटर में जोड़ा जाएगा यदि यह गुम है (see ext/pdo/pdo_stmt.c:363 in the PHP 5.3.24 source code)।

+0

मैं एक ही प्रश्न के बारे में सोच रहा था। मेरा अनुमान था कि: एसक्यूएल कीवर्ड के साथ colName को सख्ती से अलग करने के लिए प्रयोग किया जाता है। यह जानना अच्छा है कि पीडीओ लापता हो जाएगा: बाइंडिंग में। मैं हैकर की सलाह लेता हूं और रखता हूं: एसक्यूएल स्टेटमेंट्स में। – CoR

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