2012-05-31 12 views
6

मेरे पास अपाचे 2.2 और PHP 5.4 स्थापित के साथ एक लिनक्स सर्वर डेबियन 6 है। मुझे अपने एप्लिकेशन को एक एमएस एसक्यूएल सर्वर 2008 के साथ कनेक्ट करने की आवश्यकता है।लिनक्स पर PHP 5.4: एमएस एसक्यूएल सर्वर 2008 के साथ कैसे कनेक्ट करें?

मेरा एप्लिकेशन ज़ेंड फ्रेमवर्क 1.11 और वर्णसेट यूटीएफ -8 का उपयोग कर रहा है (मेरे पास दुनिया के सभी स्थानों के उपयोगकर्ता होंगे और वे डेटा अपने आप में रखेंगे भाषा)।

फ्रिस्ट, मैंने लिनक्स के लिए माइक्रोसॉफ्ट एसक्यूएल सर्वर ओडीबीसी ड्राइवर का उपयोग करने की कोशिश की। इसमें कहा गया है केवल रेड हैट के लिए है, लेकिन मैं स्थापित करने के लिए इन निर्देशों का पालन:

http://www.codesynthesis.com/~boris/blog/2011/12/02/microsoft-sql-server-odbc-driver-linux/

मैं कनेक्ट और उस पर कुछ चयन कर सकता है, लेकिन मैं इसे पर डेटा सम्मिलित नहीं कर सकता है। मुझे पीडीओ कथन पर बाध्यकारी पैरामीटर पर एक समस्या मिली।

सम्मिलित निम्नलिखित की तरह डेटा काम नहीं किया:

$stmt = $conn->prepare("insert into mar_regions (name) values (:name)"); 
$resp = $stmt->execute(array(':name' => $param)); 

लेकिन अगर मैं इस तरह इस्तेमाल किया, यह काम करता है:

$stmt = $conn->prepare("insert into mar_regions (name) values ('".$param."')"); 
$resp = $stmt->execute(); 

तो मैं इस चालक से छोड़ दिया, क्योंकि अपने आवेदन यदि कोई ZF 1.11 काम नहीं करेगा तो यह काम नहीं करेगा।

सेकंड, मैं फ्रीटीडीएस के लिए पीडीओ चालक का उपयोग करने का प्रयास करता हूं। यह ठीक काम करता है और मैं अपने जेडएफ 1.11 एप्लिकेशन पर उपयोग कर सकता हूं।

लेकिन फिर, मुझे एक और समस्या मिली: वर्णमाला। मैं अपने freeTDS.conf, UTF-8 का उपयोग NVARCHAR उपयोग करने के लिए मेरी टेबल बदलने के लिए VARCHAR के insted कॉन्फ़िगर और डाल सकता है utf-8 डेटा इस तरह:

$stmt = $dbh->prepare("insert into mar_teste (name) values (N'ンから初・配信 € зеленый банан ÀÀÀÀáááááá')"); 
$resp = $stmt->execute(); 

लेकिन, मेरी जेडएफ 1.11 पर, मैं नहीं कर सकता प्रश्नों पर इस 'एन' विशेषता को पास करें! तो मेरा आवेदन अभी भी काम नहीं किया।

जैसा कि आप देख सकते हैं कि मैंने सब कुछ करने की कोशिश की।

तो मेरा प्रश्न है: एमएस एसक्यूएल सर्वर 2008 पर जेडएफ 1.11 वर्णसेट यूटीएफ -8 का उपयोग करके लिनक्स से कैसे कनेक्ट करें?

उत्तर

4

मेरे प्रश्न का उत्तर है: फ्री टीडीएस का प्रयोग करें! उस पर चारसेट के लिए एक पैरामीटर Theres:

;; BANCO DE DADOS LINUX 
database.adapter    = PDO_MSSQL 
database.params.pdoType   = dblib 

database.params.host   = MyDSN 
database.params.dbname   = <<dbname>> 
database.params.username  = <<username>> 
database.params.password  = <<passwd>> 
database.params.driver_options.charset = UTF-8 

database.isDefaultTableAdapter = true 

यह समस्या का हल:

[MyDSN] 
    host = <<ip>> 
    port = <<port>> 
    # use 8.0 for newer versions of SQLSERVER 
     tds version = 8.0 
     # text size don't need to be such a high value, its just an example 
     text size = 4294967295 
     client charset = UTF-8 

Zend फ्रेमवर्क पर, इस तरह अपने कनेक्शन कॉन्फ़िगर! ;)

संबंधित मुद्दे