PHP 5.4 в Linux: как подключиться к MS SQL Server 2008?

У меня есть Linux-сервер Debian 6 с установленными Apache 2.2 и PHP 5.4. Мне нужно подключить приложение к MS SQL Server 2008.

мое приложение использует Zend Framework 1.11 и charset UTF-8 (у меня будут пользователи из всех мест в мире, и они будут размещать данные на своем языке).

FRIST, я попытался использовать драйвер ODBC Microsoft SQL Server для Linux. Он говорит, что только для Red Hat, но я следую этим инструкциям, чтобы установить:

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

я мог бы подключиться и сделать некоторые выборы на нем, но я не мог вставить данные на нем. У меня проблема с параметрами привязки для операторов pdo.

вставить данные, как следующее не работает:

$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 не будет работать, если это.

во-вторых, я пытаюсь использовать драйвер PDO для FreeTDS. Это работает нормально, и я мог бы использовать в своем приложении ZF 1.11.

но тогда у меня есть еще одна проблема: charsets. Я настраиваю свои freeTDS.conf для использования UTF-8, измените мои таблицы на NVARCHAR insted VARCHAR и вставьте данные utf-8 следующим образом:

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

но, на моем ZF 1.11, я не могу передать этот атрибут " N " на querys! Так что мое заявление все еще не работает.

As как видите, я все перепробовал.

у меня вопрос: как подключиться из linux, используя кодировку ZF 1.11 UTF-8, на MS SQL Server 2008?

1 ответов


ответ на мой вопрос: используйте freeTDS! На нем есть параметр для кодировки:

[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 Framework настройте соединение следующим образом:

;; 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

Это решает проблему! ;)