Pull to refresh

PHP, MS SQL Server и UTF-8

Reading time 1 min
Views 15K
По работе столкнулся с задачей настроить систему на работу с Microsoft SQL Server 2008. Система должна поддерживать мультиязычность, как следствие все строковые данные должна хранить в полях типа nvarchar и ntext. Проблема оказалась в том, что php_mssql.dll не умеет работать с этими полями, а для использования PDO и SQL Server Driver for PHP пришлось бы переписать очень много кода.

Решение проблемы оказалось не сложным…


Для доступа к SQL Server будем использовать библиотеку FreeTDS.

1. Скачиваем расширение для php и копируем dll в папку extension_path.

http://download.moodle.org/download.php/dblib/php52/DBLIB_TS.zip (Thread Safe)
http://download.moodle.org/download.php/dblib/php52/DBLIB_NOTS.zip (Non Thread Safe)

2. Отключаем extension=php_mssql.dll в php.ini

3. Установливаем extension=php_dblib.dll в php.ini

4. Создать файл c:\freetds.conf

[global]
host = xxx.xxx.xxx.xxx (ip of the MSSQL server)
port = 1433
client charset = UTF-8
tds version = 8.0
text size = 20971520


5. Всё. Теперь все функции mssql_* должны правильно работать с этими типами полей.

p.s. Для подключения к SQLServer Express не нужно добавлять /SQLEXPRESS к имени хоста.
Tags:
Hubs:
0
Comments 7
Comments Comments 7

Articles