Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक MYSQL डेटा प्रकार के विरुद्ध PHP चर प्रकार की जाँच करें

यदि डेटा CSV फ़ाइल से आ रहा है, तो आपको याद रखना होगा कि सभी मान स्ट्रिंग होने जा रहे हैं (यहां तक ​​कि संख्यात्मक स्ट्रिंग्स में अभी भी एक स्ट्रिंग प्रकार है)।

इसलिए आप is_int() का उपयोग नहीं कर सकते हैं /is_float() /आदि, क्योंकि यह आपको केवल प्रकार . के बारे में बताता है या चर। आप is_numeric() का उपयोग कर सकते हैं मूल्य की जांच करने के लिए, लेकिन यह "+0123.45e6" जैसी घातीय संकेतन जैसी चीजों की अनुमति देगा। कभी-कभी ctype_digit() इस कारण से पूर्णांकों के परीक्षण के लिए उपयोगी हो सकता है, क्योंकि यह केवल 0-9 संख्याओं को एक स्ट्रिंग में मौजूद होने की अनुमति देगा ताकि यह सही हो।

पैटर्न-आधारित डेटा प्रकारों की पहचान करने के लिए नियमित अभिव्यक्तियों का भी उपयोग किया जा सकता है, लेकिन बड़े डेटा सेट के साथ काम करते समय आपको प्रदर्शन ओवरहेड पर ध्यान देना होगा। प्रदर्शन के दृष्टिकोण से लगभग हमेशा preg_ . का उपयोग करने की सलाह दी जाती है ereg . के बजाय कार्यों का परिवार कार्य।

यदि आप ENUM या SET प्रकार जैसी चीज़ों को मान्य कर रहे हैं, तो आपको संभवतः कानूनी मानों वाली एक सरणी बनाने की आवश्यकता होगी (या किसी क्वेरी के साथ इन्हें निकालें) और फिर in_array() के साथ उनके विरुद्ध मान की जाँच करें। ।

CHAR/VARCHAR फ़ील्ड के लिए, आप कॉलम परिभाषा को पार्स कर सकते हैं और फिर जांच सकते हैं कि मान की लंबाई बाधाओं के भीतर आती है या नहीं।

यदि आपके किसी भी कॉलम पर NULL प्रकार की अनुमति है, तो आपको इसके विरुद्ध भी जांच करनी होगी (और संभवतः रिक्त मान या स्ट्रिंग "NULL" को वास्तविक NULL मान पर मैप करें)।

यदि आप वास्तव में इन मूल्यों से ठीक से बचना चाहते हैं, तो तैयार बयानों और पीडीओ (PHP डेटा ऑब्जेक्ट) एक्सटेंशन का उपयोग करें। यह MySQL को प्रकार के आधार पर डेटा से ठीक से बचने की अनुमति देता है। (आप MySQLi के साथ तैयार स्टेटमेंट का भी उपयोग कर सकते हैं।)

यदि आप विशिष्ट डेटा प्रकारों की तलाश कर रहे हैं और उन्हें कैसे पहचानें, तो हो सकता है कि आप अधिक पूर्ण उत्तरों की सुविधा के लिए अपने प्रश्न को संपादित करना चाहें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जब मैं एक नया इंडेक्स जोड़ता हूं तो MySQL में किसी इंडेक्स की कार्डिनैलिटी अपरिवर्तित क्यों रहती है?

  2. मैं MySQL में रूट यूजरनेम कैसे बदल सकता हूं

  3. डॉकर-लिखें:हर बार MySQL डीबी को फिर से शुरू करना

  4. varchar . के बजाय varbinary क्यों

  5. Java/Mysql आप एक संपूर्ण SQL फ़ाइल को एक mysql सर्वर में कैसे इंजेक्ट करेंगे?