एसक्यूएलएसआरवी और पीडीओ_SQLSRV दो current-generation php drivers available from Microsoft हैं, लेकिन दोनों नीचे दिए गए कोड का उपयोग करते हैं: SQL सर्वर मूल क्लाइंट 11. (यही कारण है कि PHP ड्राइवरों का कोई मैक या लिनक्स संस्करण नहीं है: वे केवल रैपर हैं।) दोनों का प्रदर्शन ड्राइवर समान होना चाहिए; यह सिर्फ एक बात है कि आप कौन सी एपीआई पसंद करते हैं।
ज्यादातर मामलों में कोई क्रॉस-प्लेटफ़ॉर्म विचारों के कारण PDO_SQLSRV ड्राइवर का उपयोग करेगा। हालांकि, एक नई (छोटी) परियोजना के लिए दोनों ड्राइवरों को देखने के बाद मैं SQLSRV ड्राइवर के साथ गया क्योंकि यह अंतर्निहित SQL सर्वर डेटाटाइप के रूप में डेटा [मानचित्र का] के रूप में देता है, जबकि PDO_SQLSRV सब कुछ एक स्ट्रिंग के रूप में देता है।
इसलिए यदि आपके एसक्यूएल है:
SELECT 1234 as integer, Cast(123.456 as float) as float,
getdate() as date, '1234' as string1,'123.456' as string2;
फिर PDO_SQLSRV से पंक्ति के var_dump देता है:
array(1) {
[0] =>
array(5) {
'integer' =>
string(4) "1234"
'float' =>
string(7) "123.456"
'date' =>
string(23) "2012-12-06 22:35:05.373"
'string1' =>
string(4) "1234"
'string2' =>
string(7) "123.456"
}
}
जबकि SQLSRV ड्राइवर देता है:
array(1) {
[0] =>
array(5) {
'integer' =>
int(1234)
'float' =>
double(123.456)
'date' =>
class DateTime#1 (3) {
...
}
'string1' =>
string(4) "1234"
'string2' =>
string(7) "123.456"
}
}
यह मुझे पागल कर दिया कि PDO_SQLSRV ने मेरे सभी डेटा को स्ट्रिंग में डाला है चाहे मैं इसे चाहता था या नहीं, इसलिए मैंने SQLSRV का उपयोग किया। (मुझे यह मानना है कि मैंने ReturnDatesAsStrings=true
सेट किया है क्योंकि मैं डेट क्लास से निपटने के लिए बहुत आलसी था।)
मुझे सिंटैक्स थोड़ा बेहतर पसंद है, लेकिन यह सिर्फ मुझे है।
स्रोत
2012-12-07 03:59:47