int करने के लिए परिवर्तित पीएचपी < = 5.2, MySQL कार्य/वर्गों (यानी mysql_*
, mysqli_*
, और PDO
) आधारित होते हैं साथ libmysql पर - एक सी लाइब्रेरी जो MySQL सर्वर के साथ संचार के लिए समर्थन प्रदान करती है।
कि लाइब्रेरी का उपयोग हमेशा सूत्र, यहां तक कि पूर्णांक के लिए और स्तंभों नाव कार्य - और कुछ भी नहीं है कि आप के बारे में कुछ नहीं कर सकता है: एकमात्र समाधान है कुछ "मानचित्रण परत" (एक ORM) की तरह है करने के लिए है कि " जानता है ", PHP पक्ष पर, प्रत्येक कॉलम टाइप करने वाला टाइप होना चाहिए, और हर बार कुछ डेटा डेटाबेस से प्राप्त होने पर रूपांतरण करेगा।
नोट: जिस तरह से आप डेटा डालने वाले तरीके से इस तथ्य के बारे में कुछ भी नहीं बदलते हैं कि डीबी से डेटा प्राप्त करते समय आपको तार मिलेंगे।
पीएचपी साथ > = 5.3 कार्यों को करता है एक MySQL सर्वर के साथ संवाद libmysql के बजाय mysqlnd (MySQL मूल निवासी चालक) का उपयोग कर सकते हैं - है, हालांकि यह संकलन समय पर कॉन्फ़िगर किया जाना है।
और कुछ परिस्थितियों में "मूल" डेटा-प्रकारों के साथ संवाद करने में सक्षम होने के कारण, माइस्क्लंड प्रदान करने वाली अच्छी चीजों में से एक है; इसके बारे में, इस लेख में कुछ दिलचस्प सूचनाएं होनी चाहिए: PHP: New network traffic, CPU and memory savings with mysqlnd।
करने के लिए चीजों को कम करता है:
- पीएचपी 5.2 के साथ, आप केवल डेटाबेस से तार मिलेगा; और आपको कुछ प्रकार-रूपांतरण करना होगा
- PHP 5.3 के साथ, आपको कम से कम कुछ मामलों में देशी डेटाटाइप मिल सकते हैं।
स्रोत
2010-02-23 12:10:18
पहला धन्यवाद, लेकिन जब मुझे यह फ़ील्ड SQL तालिका में INT के रूप में घोषित किया जाता है तो मुझे डेटा प्रकार "कहने" की आवश्यकता क्यों है ... – aviv
अच्छी तरह से, क्योंकि डीबी इंटरफ़ेस इसका समर्थन नहीं करता है। आप डीबी से प्राप्त करते हैं तारों की एक सरणी है।आप इन स्तरों में से कुछ को एप्लिकेशन स्तर पर किसी और चीज़ में परिवर्तित कर सकते हैं, लेकिन यह पूरी तरह से उड़ाए गए ओआरएम परत के बिना "स्वचालित रूप से" नहीं होगा। – user187291