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 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 4 notes

up
14
ian at helastel dot com
3 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