मैंने बहुत सारे Zend_Db
. को लागू किया है Zend फ्रेमवर्क में कोड।
जैसा कि अन्य ने कहा है, इसका कारण Zend_Db
. है देशी PHP पूर्णांकों या फ़्लोट्स के बजाय स्ट्रिंग्स लौटाता है कि PHP के डेटाबेस एक्सटेंशन स्ट्रिंग्स लौटाते हैं। और इसका कारण यह है कि कुछ डेटाबेस प्रकार का प्रतिनिधित्व करने के लिए कोई मूल PHP प्रकार नहीं हो सकता है।
उदाहरण के लिए, MySQL का BIGINT
एक 64-बिट हस्ताक्षरित पूर्णांक है। डिफ़ॉल्ट रूप से, PHP int
प्रकार 32-बिट मानों तक सीमित है, इसलिए यदि आप डेटाबेस से डेटा प्राप्त करते हैं और इसे परोक्ष रूप से int
में परिवर्तित करते हैं , कुछ मानों को छोटा किया जा सकता है। float
. के लिए इसी तरह के और भी कई मामले हैं और तिथियां, आदि।
सभी डेटा प्रकारों के लिए स्ट्रिंग प्रस्तुति का उपयोग करना सरल और सुसंगत रहने का सबसे अच्छा तरीका है, डेटा हानि से बचने के बारे में सुरक्षित रहें, और डेटा प्रकार मैपिंग करने के लिए बहुत सारे विक्रेता-विशिष्ट विशेष-केस कोड लिखने से बचें। उस अतिरिक्त कोड पर प्रदर्शन दंड भी लगेगा।
इसलिए यदि आपके पास विशिष्ट मामले हैं जहां आपको मूल PHP डेटा प्रकारों में मैप करने के लिए डेटाबेस परिणामों की आवश्यकता है, तो आपको इसे अपने एप्लिकेशन कोड में स्वयं लागू करना चाहिए (उदाहरण के लिए कस्टम Zend_Db_Table_Row
में) कक्षा)।