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
Это решает проблему! ;)