में कनवर्ट करने का प्रयास करता है आज मुझे पता चला कि हमारा कोड पीडीओ में बदलाव के साथ पिछड़ा असंगत प्रतीत होता है। PHP < 5.6 में परिणाम PDOStatement
से इसके कार्यों के माध्यम से fetch
और fetchAll
पंक्तियों को वापस कर दिया गया है जिनके मूल्य या तो स्ट्रिंग या शून्य हैं। हमारा कोड इस विशेषता पर निर्भर करता है।PHP: 7 पीडीओ fetch (सभी) प्रकारों को संबंधित प्रकार
कुछ समय पहले हमने PHP 7 पर अपडेट किया था। यह पता चला है कि पीडीओ अब कुछ डेटाटाइप को अन्य संबंधित प्रकारों में परिवर्तित करने का प्रयास करता है। उदाहरण के लिए, FLOAT
कॉलम PDOStatement
परिणाम सेट में एक फ़्लोट मान बनाता है। और TINYINT
कॉलम परिणाम सेट में एक पूर्णांक मान बनाता है। दिलचस्प बात यह है कि BIGINT
या एक बड़ा INT UNSIGNED
स्ट्रिंग के रूप में दिखाई देता है जब इसे पूर्णांक के रूप में प्रदर्शित नहीं किया जा सकता है और कुछ अन्य प्रकार (जैसे DECIMAL
) किसी भी रूप में परिवर्तित नहीं होते हैं। वे तार रहते हैं। मैंने सोचा कि यह आम तौर पर सिद्धांत पर सहमत था कि डेटा प्रकारों को एक MySQL डेटाबेस से PHP डेटा प्रकारों में परिवर्तित करना समस्याग्रस्त है और PHP द्वारा स्वयं नहीं किया जाना चाहिए, लेकिन स्पष्ट रूप से PHP 7 ने अन्यथा निर्णय लिया है।
तो PHP 7 का पीडीओ रूपांतरण नियमों का एक सेट प्रस्तुत करता है जो डेटाबेस से चुने गए मानों को परिवर्तित करने के लिए आंतरिक रूप से उपयोग करता है, लेकिन यह मेरे कोड बेस को खराब करता है और इन रूपांतरण नियमों की असंगतताओं के कारण, मैं अपने परिवर्तन को नहीं बदलेगा उनके अनुरूप करने के लिए कोड आधार। क्या शायद कुछ प्रकार की सेटिंग या ध्वज है जिसे मैं पीडीओ को प्राप्त मूल्यों को बदलने से रोकने के लिए टॉगल कर सकता हूं?
से पहले के रूप में मुझे लगता है कि शपथ ग्रहण कर सकते थे लौट जाएगा है कम से कम संख्या में जहां काफी समय के लिए वास्तविक संख्या में डाला जा रहा है ... !? स्पष्टीकरण के लिए – deceze
@ डिसेज आप हमेशा मेरे [पीडीओ विश्वकोष] (https://phpdelusions.net/pdo#returntypes) को देख सकते हैं :) –
तो उन्होंने संभावित रूप से ध्यान दिए बिना एनडी का उपयोग करना शुरू कर दिया है? : पी –