Как стать автором
Обновить

Подключение MS SQL к PHP 5.3 и выше

Недавно передо мной встала задача: работать с MS SQL из PHP. Поиск в Google по ключевым словам «php mssql» и подобным дал уйму ссылок с примерно одинаковой инструкцией:
— раскомментировать в php.ini строчку extension=php_mssql.dll;
— перезапустить Апач/Денвер;
— наслаждаться.

Однако выяснилось, что начиная с версии 5.3 в состав дистрибутива PHP это расширение не входит и, более того, не поддерживается. Для работы с MS SQL рекомендуется драйвер SqlSrv от Microsoft. Пошаговой инструкции по работе с ним найти не смог, поэтому после ряда проб и ошибок написал свою, которую и предлагаю вашему вниманию.

Первое, с чем придётся столкнуться — это соответствие версий PHP, MS SQL, SqlSrv и Windows.

SqlSrv доступен двух версий: 2.0 и 3.0. Версия 2.0 работает только c MS SQL 2008, при этом поддерживает PHP версий 5.2 и 5.3; версия 3.0 работает только с MS SQL 2012, а PHP поддерживает версий 5.3 и 5.4. При этом необходимо помнить, что MS SQL 2012 работает только под Windows Vista и выше.
На моей машине стоит Windows XP, поэтому были взяты: MS SQL 2008, PHP 5.3.5 и SqlSrv 2.0.

Сначала нужно установить сам сервер MS SQL; неожиданностей в установке нет, обо всех проблемах установщик сообщает вовремя и даёт возможность исправить. Желательно также установить MS SQL Server Management Studio: средство управления базами данных. Установка похожа на установку сервера.

Установка связки Apache+PHP описывалась много и подробно, так что здесь не будем её касаться.

Теперь нужно подключить SqlSrv к PHP. Скачанный с сайта Microsoft дистрибутив — это самораспаковывающийся архив с несколькими библиотеками .dll, для разных версий PHP. Так, я использовал php_sqlsrv_53_ts_vc6.dll. Здесь 53 − ветка PHP (5.3.x), ts − Thread Safe дистрибутив, vc6 − использованный компилятор. Если нужно, то эти сведения можно найти в первом же блоке phpinfo(). Подходящую библиотеку нужно скопировать в каталог \ext, а также добавить в php.ini строчку

extension=php_sqlsrv_53_ts_vc6.dll

Если PHP только что установлен, нужно также не забыть раскомментировать строчку

extension_dir = "c:\php\ext"


PHP готов к работе. Осталось подготовить MS SQL; дело в том, что после установки у него отключены все клиентские протоколы, кроме «Общая память». Нужно их включить; делается это в приложении SQL Server Configuration Manager, идущая в комплекте с сервером.

Теперь все компоненты настроены, и можно проверять работу всей системы. Для этого подойдёт такой скрипт:

function FormatErrors( $errors )
{
echo "Error information: <br/>";

foreach ( $errors as $error )
{
echo "SQLSTATE: ".$error['SQLSTATE']."<br/>";
echo "Code: ".$error['code']."<br/>";
echo "Message: ".$error['message']."<br/>";
}
}

$serverName = "Имя сервера"; // Имя сервера задавалось при установке; его также можно увидеть при запуске Management Studio

$conn = sqlsrv_connect( $serverName);
if( $conn === false )
{ die( FormatErrors(sqlsrv_errors()) ); }

var_dump($conn);


Если всё правильно, то на экране будет строчка

resource(2) of type (SQL Server Connection)

И последнее: для работы с базой данных из PHP нужно использовать функции семейства sqlsrv_, а не mssql_.

Полезные ссылки:
Microsoft SQL Server 2008 Express
Microsoft SQL Server 2008 Management Studio Express
Microsoft Drivers 3.0 for SQL Server for PHP (SqLSrv)
Функции PHP для работы с SqlSrv
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.