बुधवार, 27 जनवरी 2010

कोड इग्नाइटर के लिए sqlsrv का ड्राइवर

यदि आप PHP में वेब डेवलपमेंट के लिए कोड इग्नाइटर का प्रयोग कर रहे हैं तो आपको पता होगा कि उसमें MSSQL का ड्राइवर होता है जो कि पीएचपी के mssql एक्सटेंशन का प्रयोग करता है.
माइक्रोसाफ़्ट नें स्वयं भी MSSQL का एक्सटेंशन विकसित किया है. इसे SQLSRV के नाम से जाना जाता है.
परंतु कोड इग्नाइटर में इसका ड्राइवर नही होता है. इस पोस्ट में मैं कोड इग्नाइटर में SQLSRV को प्रयोग करने के बारे में बताउंगा.

SQLSRV को आप यहां से डाउनलोड कर सकते हैं. (http://www.microsoft.com/downloads/details.aspx?FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9&displaylang=en)
एक बार इसे डाउनलोड करने के बाद जिप फ़ाइल से एक्सटेंशनों को निकाल लें फ़िर उपयुक्त एक्सटेंशन को अपनी पीएचपी की एक्स्टेंशन वाली डायरेक्ट्री में डाल दें. ये सामान्यत: ext नाम की होती है.
अब php.ini फ़ाइल को खोलें और उसमें
extension=php_sqlsrv_52_ts_vc6.dll
एक्स्टेंशनों वाली सूची के पास लिख दें. ध्यान रहे मैंने php_sqlsrv_52_ts_vc6.dll  नाम लिखा है क्योंकि मैं इसी एक्सटेंशन का प्रयोग कर रहा था. आप जिस एक्सटेंशन का प्रयोग कर रहे हों उसी का नाम लिखें.

अब सर्वर दोबारा चालू करें. और phpinfo() फ़ंग्शन का प्रयोग करके जांच लें कि SQLSRV नामक प्रविष्टि उसमें आ गई है या नही.

कोड इग्नाइटर के लिए SQLSRV का ड्राइवर यहां से डाउनलोड किया जा सकता है:
http://www.kaweb.co.uk/wp-content/2008/07/ci_php_sqlsrv.zip

इसके अंदर से SQLSRV वाले फ़ोल्डर को निकालकर अपने कोड इग्नाइटर के system\database\drivers वाले फ़ोल्डर में डाल दें.

अब जब भी आपको इस ड्राइवर का प्रयोग करना हो तो अपनी डाटाबेस विन्यास/कांफ़िगरेशन फ़ाइल में dbdriver के आगे sqlsrv लिखकर प्रयोग करें.

एक दिक्कत मुझे इस SQLSRV को प्रयोग करते हुए आई कि कोड इग्नाइटर db_set_charset फ़ंग्शन की त्रुटि दिखा रहा था. कह रहा था कि ये फ़ंग्शन उपलब्ध नही है. मैंने इसे ठीक करने के लिए निम्नलिखित कोड sqlsrv_driver.php फ़ाइल में CI_DB_sqlsrv_driver क्लास के अंतर्गत लिख दिया.

 function db_set_charset($charset, $collation)
{
return TRUE;
}
त्रुटि संदेश आना बंद हो गया

दूसरी दिक्कत तारीखों को लेकर थी. जबतक मैं ODBC का प्रयोग कर रहा था तब तक तारीखों वाले कालमों को प्रदर्शित करने के लिए echo भर से से काम चल जा रहा था परंतु जब SQLSRV का प्रयोग किया तो त्रुटि मिली कि DateTime Object को String में बदलना संभव नही है.
मेरे DateTime कालम का नाम था ContPDate जिसे प्रदर्शित करने के लिए मैं कुछ इस प्रकार का कोड उपयोग कर रहा था:

foreach($q->result() as $r) {
                $dt = $r->ContPDate;
echo $dt;
}

परंतु ये कोड केवल ODBC के साथ काम कर रहा था.
SQLSRV के लिए थोड़ी मशक्कत के बाद मुझे ये हल मिल गया

foreach($q->result() as $r) {
                $dt = $r->ContPDate->format('Y-m-d H:i:s.000');
echo $dt;
}

यानि कि गड़बड़ ये थी कि $r->ContPDate एक DateTime Object था. जिसे प्रदर्शित करने के लिए format नामक विधि की जरूरत थी. format method, DateTime Class के अंतर्गत है.


SQLSRV के बारे में और अधिक जानकारी के लिए इधर जाएं:
http://msdn.microsoft.com/en-us/library/cc296172(SQL.90).aspx

कोई टिप्पणी नहीं:

एक टिप्पणी भेजें

इस ब्लाग में प्रकाशित सामग्री कापीराईट द्वारा सुरक्षित है. बिना अनुमति इसका किसी भी प्रकार से अन्यत्र प्रयोग/प्रकाशन मूल रूप में/बदल कर उपयोग नही किया जा सकता है.

हिंदी में तकनीकी लेखन को प्रोत्साहित करें

please donate अभी तक वेब डेवलपमेंट अथवा प्रोग्रामिंग आदि से संबंधित जानकारी पर अंग्रेजी का एकाधिकार रहा है. भारत में इतने आई टी गुरू होने के बावजूद भारतीय भाषाओं में इस विषय पर लेखन नगण्य है. इस ब्लाग के माध्यम से मैं हिन्दी भाषिओं तक वेब डेवलपमेंट का ज्ञान पहुंचाने की कोशिश कर रहा हूं. अत: आप सभी से अनुरोध है कि हिंदी में तकनीकी लेखन के लिये सहयोग करें
मैं वेबसाइटें भी बनाता हूं. यदि आपको बनवानी हो तो बताएं.

इस ब्लॉग में खोजें

समर्थक