2013-01-04 20 views
7

ज़ेन फ्रेमवर्क 1 में डेटाबेस एडाप्टर के लिए एक quoteinto विधि है जिसका उपयोग एसक्यूएल स्टेटमेंट्स को उद्धृत करने के लिए किया जा सकता है।ZF1 के quoteInto() विधि के ZF2 समकक्ष क्या है?

मैं ज़ेंड फ्रेमवर्क 2 में इसके बराबर जानना चाहता हूं?

उत्तर

6

दुर्भाग्य से, quoteInto() विधि को ZF 2.0 में नए Zend\Db के परिचय के साथ हटा दिया गया था। और कोई समकक्ष नहीं है जिसमें बिल्कुल वही व्यवहार है।

ZF2 में quoteValue() विधि है। यह विधि पैरामीटर के रूप में एक मान लेती है, और उसके बाद मान उद्धृत करती है ताकि आप सुरक्षित रूप से इसे एक SQL क्वेरी में मान के रूप में रख सकें।

हालांकि, आप ZF1 quoteInto() विधि के व्यवहार को दोहराने के लिए quoteValue() का उपयोग कर सकते हैं। आप बस इसे करने के लिए ZF1 से quoteInto() विधि का कोड ले सकता है, और लागू ZF2 में मंच वस्तु से quoteValue() विधि:

// modified quoteInto() function for ZF2 
function quoteInto($text, $value, $platform, $count = null) 
{ 
    if ($count === null) { 
     return str_replace('?', $platform->quoteValue($value), $text); 
    } else { 
     while ($count > 0) { 
      if (strpos($text, '?') !== false) { 
       $text = substr_replace($text, $platform->quoteValue($value), strpos($text, '?'), 1); 
      } 
      --$count; 
     } 
     return $text; 
    } 
} 

कुछ मतभेद हैं। ZF1 में $type पैरामीटर है, लेकिन ZF2 इन चीजों के साथ काम करने के तरीके के कारण, प्रकार पैरामीटर बहुत अधिक समझ में नहीं आता है। और $platform पैरामीटर है, क्योंकि इस विधि के quoteValue() विधि के लिए प्लेटफ़ॉर्म पर निर्भरता है।

-1

यह अभी भी वहां है (थोड़े), zf2/library/Zend/Db/Adapter/Platform /your DB adapter देखें, मुझे MySql variant में उपलब्ध 6 अलग-अलग quote() विधियां मिलीं। मुझे लगता है कि quoteValue() ने डिफ़ॉल्ट quoteInto() को प्रतिस्थापित कर दिया है, हम सभी का उपयोग किया जाता है।

[संपादित]
Using the platform object कुछ दिशा प्रदान करेगा लेकिन मुझे लगता है कि समय के सबसे नए SQL कक्षाएं सिर्फ हमारे लिए के हवाले करने के लिए प्लेटफ़ॉर्म API का प्रयोग करेंगे। मुझे अभी भी यह पता चल रहा है इसलिए मुझे कुछ भी सच नहीं है।

+0

'quoteInto' दो पैरामीटर लेता है: स्ट्रिंग और प्रतिस्थापित मूल्य लेकिन' उद्धरण वैल्यू 'केवल 1 पैरामीटर लेता है। मुझे इसका उपयोग कैसे करना चाहिए? –

3

SQL कथन का उद्धरण करना इसे करने का पुराना और संभावित रूप से असुरक्षित तरीका है। आपको तैयार बयानों का उपयोग करना चाहिए जिनके पास एसक्यूएल इंजेक्शन के खिलाफ बेहतर सुरक्षा है। मैं पीडीओ ड्राइवरों में से एक का उपयोग करूंगा listed here (आपके डेटाबेस के आधार पर) और नीचे दिए गए कुछ उदाहरणों का पालन करें जो तैयार प्रश्नों का उपयोग करते हैं।