Instead of specifying tds version and client charset in freetds.conf, you may pass it as a parameter.
<?php $dsn = 'dblib:version=7.0;charset=UTF-8;host=domain.example.com;dbname=example;'; ?>
(PECL PDO_DBLIB >= 0.9.0)
PDO_DBLIB DSN — Соединение с базами данных Microsoft SQL Server и Sybase
Имя источника данных (Data Source Name, DSN) PDO_DBLIB состоит из следующих элементов:
Используйте префикс DSN sybase:
в случае, если
PDO_DBLIB собран с библиотеками Sybase ct-lib,
mssql:
, если PDO_DBLIB собран с библиотеками
Microsoft SQL Server, или dblib:
, если
PDO_DBLIB собран с библиотеками FreeTDS.
host
Имя сервера, на котором располагается база данных. По умолчанию 127.0.0.1.
dbname
Имя базы данных.
charset
Клиентская кодировка.
appname
Имя приложения (используется в sysprocesses). По умолчанию "PHP Generic DB-lib" или "PHP freetds".
secure
В данный момент не используется.
Пример #1 Примеры использования PDO_DBLIB DSN
Следующие примеры демонстрируют PDO_DBLIB DSN для соединения с базами данных Microsoft SQL Server и Sybase:
mssql:host=localhost;dbname=testdb sybase:host=localhost;dbname=testdb dblib:host=localhost;dbname=testdb
Instead of specifying tds version and client charset in freetds.conf, you may pass it as a parameter.
<?php $dsn = 'dblib:version=7.0;charset=UTF-8;host=domain.example.com;dbname=example;'; ?>
If you're using FreeTDS driver and you want to use "charset" parameter then you may have to edit freetds.conf (e.g. /etc/freetds/freetds.conf) and force connection using at least version 7.0 of the protocol.
tds version = 7.0
Charset parameter accepts all encodings supported by iconv (execute iconv --list to show all encodings).
when you connect to non standart 1433 port
for win32 use DSN like 'mssql:host=hostname,port;dbname=database'
for FreeTDS and DB-Lib use DSN like 'mssql:host=hostname:port;dbname=database'