2012-05-31 7 views
6

Apache 2.2 ve PHP 5.4 yüklü bir Linux sunucum Debian 6 var. Uygulamamı MS SQL Server 2008 ile bağlamalıyım.PHP Linux üzerinde 5.4: MS SQL Server 2008 ile nasıl bağlanır?

Uygulamam Zend Framework 1.11 ve charset UTF-8 kullanıyor (Dünyadaki tüm yerlerden kullanıcılara sahibim ve verileri kendi başlarına dil).

FRIST, Linux için Microsoft SQL Server ODBC sürücüsünü kullanmayı denedim. yazıyor sadece Red Hat için, ama yüklemek için aşağıdaki talimatları uygulayın:

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

ben bağlamak ve üzerinde bazı seçer yapmak, ama üzerinde veri eklemek edemedi başladı. Pdo ifadelerinde bağlayıcı parametrelerle ilgili bir sorunum var.

takın aşağıdaki gibi verileri işe yaramadı:

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

Ama böyle olunca, çalışır:,

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

Bu yüzden bu sürücüsünden vazgeçti başvurumun çünkü ZF 1.11 bu işe yaramaz.

İKİNCİ, FreeTDS için PDO Sürücüsü kullanmayı deneyin. Bu bir şekilde çalışır ve ZF 1.11 uygulamasında kullanabilirdim.

Ancak bir sorun daha var: charsets.

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

Ama benim ZF 1.11 üzerinde, yapamam: Ben utf-8 böyle veriler VARCHAR Insted UTF-8 kullanmak NVARCHAR kullanmak benim tabloları değiştirmek benim freeTDS.conf yapılandırıp eklemek olabilir bu 'N' özniteliğini querys'e aktar! Yani benim başvurum hala işe yaramadı.

Gördüğünüz gibi her şeyi denedim.

Bu yüzden sorum l: MS SQL Server 2008 üzerinde ZF 1.11 karakter takımı UTF-8 kullanarak linux bağlantısı nasıl yapılır?

cevap

4

Sorunun yanıtı şudur: Use freeTDS! üzerine charset için bir parametre 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 

Bu sorunu çözer:

Zend Framework üzerinde
[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 

böyle bağlantınızı yapılandırmak! ;)