Microsoft SQL Server 関数 (PDO_SQLSRV)

はじめに

PDO_SQLSRV は、PHP Data Objects (PDO) インターフェイス を実装したドライバです。 PHP から、MS SQL Server (SQL Server 2005 以降) および SQL Azure データベースにアクセスできるようになります。

インストール手順

PDO_SQLSRV 拡張モジュールを有効にするには、適切な DLL ファイルを PHP の拡張モジュール用ディレクトリに配置して、php.ini ファイルにエントリを追加します。 PDO_SQLSRV をダウンロードすると、その中には 8 個のドライバファイルが入っています。 その中の 4 個のファイルが PDO サポート用のファイルです。非スレッドセーフな PHP (PHP 5.3) を実行している場合は php_pdo_sqlsrv_53_nts.dll を使います (ウェブサーバーとして IIS を使っている場合は、非スレッドセーフバージョンを使う必要があります)。 スレッドセーフな PHP を実行している場合は php_pdo_sqlsrv_53_ts.dll を使います。 同様に、PHP 5.4 の場合についても、非スレッドセーフなのかスレッドセーフなのかによって php_pdo_sqlsrv_54_nts.dll あるいは php_pdo_sqlsrv_54_ts.dll のいずれかを使います。

最新版のドライバのダウンロードは » SQLSRV 3.0 download のページでできます。PHP 5.2 を使っている場合や VC6 でコンパイルしたバージョンが必要な場合は、 バージョン 2.0 系を » SQLSRV 2.0 download からダウンロードして使いましょう。

システム要件に関する詳細は » SQLSRV System Requirements を参照ください。

PDO_SQLSRV 拡張モジュールは Windows 版の PHP でしか使えません。 Linux の場合は ODBC および » Microsoft's SQL Server ODBC Driver for Linux を参照ください。

定義済み定数

このドライバでは以下の定数が定義されて います。これは拡張モジュールが PHP に組み込まれているか、実行時に動的にロード されている場合のみ使用可能です。さらに、これらのドライバ固有の定数は そのドライバを使用している場合にのみ使用されます。 あるドライバ固有の属性を別のドライバで使うと、予期せぬ結果を引き起こします。 もし複数のドライバを使用しているコードを実行している場合、 PDO::getAttribute()PDO_ATTR_DRIVER_NAME 属性を使用することで、使用中のドライバ名を調べることが可能です。

PDO::SQLSRV_TXN_READ_UNCOMMITTED (integer)
この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Read Uncommitted に設定します。
PDO::SQLSRV_TXN_READ_COMMITTED (integer)
この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Read Committed に設定します。
PDO::SQLSRV_TXN_REPEATABLE_READ (integer)
この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Repeateable Read に設定します。
PDO::SQLSRV_TXN_SNAPSHOT (integer)
この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Snapshot に設定します。
PDO::SQLSRV_TXN_SERIALIZABLE (integer)
この定数は、SQLSRV DSN のキー TransactionIsolation で使えます。 この接続のトランザクション隔離レベルを、Serializable に設定します。
PDO::SQLSRV_ENCODING_BINARY (integer)
サーバーとの間のデータの送受信を生のバイトストリームで行い、 符号化や変換を一切しないように指示します。 この定数は、 PDOStatement::setAttribute、PDO::prepare、PDOStatement::bindColumn および PDOStatement::bindParam に渡せます。
PDO::SQLSRV_ENCODING_SYSTEM (integer)
サーバーとの間のデータの送受信を 8 ビット文字として行い、 システムに設定された Windows のロケールのコードページを利用します。 このコードページにマップできない文字はすべて、シングルバイトのクエスチョンマークに置き換えられます。 この定数は、PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、 PDOStatement::bindColumn および PDOStatement::bindParam に渡せます。
PDO::SQLSRV_ENCODING_UTF8 (integer)
サーバーとの間のデータの送受信を UTF-8 エンコーディングで行います。 これが、デフォルトの符号化方式です。この定数は、 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、 PDOStatement::bindColumn および PDOStatement::bindParam に渡せます。
PDO::SQLSRV_ENCODING_DEFAULT (integer)
サーバーとの間のデータの送受信を、接続時に指定した PDO::SQLSRV_ENCODING_SYSTEM に従って行います。プリペアドステートメントの中で指定された場合は、 その接続で設定されているエンコーディングを利用します。この定数は、 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、 PDOStatement::bindColumn および PDOStatement::bindParam に渡せます。
PDO::SQLSRV_ATTR_QUERY_TIMEOUT (integer)
非負の整数で、タイムアウト秒数を指定します。ゼロがデフォルトで、これはタイムアウトしないことを意味します。 この定数は、PDOStatement::setAttribute、PDO::setAttribute および PDO::prepare に渡せます。
PDO::SQLSRV_ATTR_DIRECT_QUERY (integer)
クエリを直接実行し、準備しないことを指示します。 この定数は、PDO::setAttribute および PDO::prepare に渡せます。詳細な情報は » Direct and Prepared Statement Execution を参照ください。

目次

  • PDO_SQLSRV DSN — MS SQL Server および SQL Azure データベースに接続する
add a note add a note

User Contributed Notes 5 notes

up
11
ian at helastel dot com
1 year 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
18
Peter
2 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
12
John P
2 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
-1
fleduc dot perso at gmail dot com
2 months 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
up
-50
Anonymous
3 years ago
Note that Microsoft has not been updating this driver for some time.  There are unofficial builds for PHP 5.5 based on patches against the source code head revision (from codeplex), and unconfirmed rumors that getting the source to build with PHP 5.6 is difficult.

Official versions have been released only for PHP 5.2, 5.3 and 5.4.
 
These problems probably apply to both the PDO driver (pdo_sqlsrv) and the non-PDO driver (sqlsrv extension), since they seem to be built and released together.
To Top