PHPKonf 2020 Online

Функции модуля PDO_SQLSRV для Microsoft SQL Server

Введение

PDO_SQLSRV — это драйвер, реализующий интерфейс PHP Data Objects (PDO) для получения доступа из PHP к базам данных MS SQL Server (начиная с версии SQL Server 2005) и SQL Azure.

Установка

Модуль PDO_SQLSRV включается добавлением соответствующего файла DLL в директорию модулей вашей установленной копии PHP и соответствующей записи в файл php.ini. Загружаемая копия модуля PDO_SQLSRV включает в себя восемь файлов драйверов, четыре из них для поддержки PDO. Если вы используете потоконебезопасную сборку PHP (PHP 5.3), используйте php_pdo_sqlsrv_53_nts.dll (вы должны использовать потоконебезопасную версию, если в качестве веб-сервера у вас установлен IIS). Если же вы используете потокобезопасную сборку, то должны использовать php_pdo_sqlsrv_52_ts_vc6.dll. Аналогично, для PHP 5.4 используйте php_pdo_sqlsrv_54_nts.dll или php_pdo_sqlsrv_54_ts.dll.

Наиболее часто используемая версия драйвера доступна здесь: » Загрузка SQLSRV. Если вам нужна поддержка PHP 5.2 и/или PHP скомпилирован с использованием VC6, используйте релиз драйвера 2.0: » Загрузка SQLSRV 2.0. Исходный код драйвера размещен в » публичном репозитории.

За подробностями о системных требованиях обратитесь к разделу » Системные требования SQLSRV.

Модуль PDO_SQLSRV может использоваться с PHP только в ОС Windows. Для Linux используйте ODBC и » Microsoft's SQL Server ODBC Driver для Linux.

Предопределенные константы

Перечисленные ниже константы определены данным драйвером и будут доступны только в случае, если PHP был собран с поддержкой этого расширения или данное расширение было подгружено динамически во время выполнения. Вдобавок, эти драйверо-зависимые константы должны быть использованы только совместно с этим драйвером. Использование атрибутов, специфичных для некоторого драйвера с другим драйвером может вызвать неожиданное поведение. Если ваш код выполняется с несколькими драйверами, то можно использовать функцию PDO::getAttribute() для получения атрибута PDO::ATTR_DRIVER_NAME для проверки драйвера.

PDO::SQLSRV_TXN_READ_UNCOMMITTED (int)
Данная константа - допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Read Uncommitted.
PDO::SQLSRV_TXN_READ_COMMITTED (int)
Данная константа - допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Read Committed.
PDO::SQLSRV_TXN_REPEATABLE_READ (int)
Данная константа - допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Repeateable Read.
PDO::SQLSRV_TXN_SNAPSHOT (int)
Данная константа - допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Snapshot.
PDO::SQLSRV_TXN_SERIALIZABLE (int)
Данная константа - допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Serializable.
PDO::SQLSRV_ENCODING_BINARY (int)
Определяет, что данные отправляются/получаются в виде потока байтов к/от сервера без выполнения преобразования кодировки или другого преобразования. Константа может быть передана в функции PDOStatement::setAttribute, PDO::prepare, PDOStatement::bindColumn и PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_SYSTEM (int)
Определяет, что данные отправляются/получаются к/от сервера в 8ми-битной кодировке локали Windows, установленной в системе. Все мультибайтовые символы и символы, не преобразуемые в данную кодировку, заменяются символом вопроса (?). Константа может быть передана в функции PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn и PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_UTF8 (int)
Определяет, что данные отправляются/получаются к/от сервера в кодировке UTF-8. Константа может быть передана в функции PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn и PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_DEFAULT (int)
Определяет, что данные отправляются/получаются к/от сервера согласно значению PDO::SQLSRV_ENCODING_SYSTEM, указанному при подключении. Для подключения может использоваться кодировка, указанная при подготовке выражения. Константа может быть передана в функции PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn и PDOStatement::bindParam.
PDO::SQLSRV_ATTR_QUERY_TIMEOUT (int)
Неотрицательное целое число, отражающее период тайм-аута в секундах. Ноль (0) - это значение по умолчанию, означающее, что время тайм-аута не учитывается. Константа может быть передана в функции PDOStatement::setAttribute, PDO::setAttribute и PDO::prepare.
PDO::SQLSRV_ATTR_DIRECT_QUERY (int)
Показывает, что запрос должен быть немедленно выполнен, без подготовки выражения. Константа может быть передана в функции PDO::setAttribute и PDO::prepare. За подробностями обратитесь к разделу документации » Немедленное выполнение выражений и выполнение подготовленных выражений.

Содержание

  • PDO_SQLSRV DSN — Подключение к базам данных MS SQL Server и SQL Azure
add a note add a note

User Contributed Notes 4 notes

up
14
ian at helastel dot com
4 years ago
An updated driver compatible with both PHP 7.0 and Linux is available on the PHP-7.0-Linux branch of https://github.com/Microsoft/msphpsql/

This is more up to date and supports some additional features over the ODBC / DBLIB drivers.

It is currently considered an 'Early Technical Preview' and hence has some limitations, but in my experience it has been stable.
up
11
Peter
5 years ago
SQLSRV 3.2 is now available from Microsoft that supports PHP 5.6

http://www.microsoft.com/en-us/download/details.aspx?id=20098
up
9
John P
5 years ago
As of 12/12/2014, Microsoft has officially released Version 3.1.

Support for 5.5 has 4 drivers
php_pdo_sqlsrv_55_nts.dll
php_pdo_sqlsrv_55_ts.dll
php_sqlsrv_55_nts.dll
php_sqlsrv_55_ts.dll

Note: Version 3.1 now supports PHP 5.5 and requires Microsoft ODBC Driver 11 (or higher)

You can downlod the new driver from
http://www.microsoft.com/en-us/download/details.aspx?id=20098
up
-4
fleduc dot perso at gmail dot com
3 years ago
Watch out!

If you use PDO SQLSRV on windows 7, using 32 bit php on XAMMP, you might encounter driver problems : "This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server"

The reason, Microsoft 32-bit ODBC driver doesn't install properly on 64-bit Windows 7.

Check the solution to PDO SQLSRV driver problem here in StackOverflow

https://stackoverflow.com/a/46245990/1330248
To Top