既定の PHP データ型
サーバーからデータを取得するとき、ユーザーが PHP のデータ型を指定しないと、 Microsoft SQL Server 用 Drivers for PHP はデータを既定の PHP データ型に変換します。
PDO_SQLSRV ドライバーを使用してデータが返される場合、データ型は int または string になります。
このトピックでは、SQLSRV ドライバーを使用するときの既定のデータ型について説明します。
次の表では、SQL Server のデータ型 (サーバーから取得されるデータ型)、PHP の既定のデータ型 (データが変換されるデータ型)、およびストリームと文字列の既定のエンコードを示します。 サーバーからデータを取得するときにデータ型を指定する方法の詳細については、「 How to: Specify PHP Data Types」を参照してください。
SQL Server 型 | PHP の既定の型 | 既定のエンコード |
---|---|---|
bigint | String | 8 ビット文字1 |
binary | Stream2 | バイナリ3 |
bit | Integer | 8 ビット文字1 |
char | String | 8 ビット文字1 |
date4 | Datetime | 適用なし |
datetime4 | Datetime | 適用なし |
datetime24 | Datetime | 適用なし |
datetimeoffset4 | Datetime | 適用なし |
decimal | String | 8 ビット文字1 |
float | Float | 8 ビット文字1 |
geography | STREAM | バイナリ3 |
geometry | STREAM | バイナリ3 |
image5 | Stream2 | バイナリ3 |
INT | Integer | 8 ビット文字1 |
money | String | 8 ビット文字1 |
nchar | String | 8 ビット文字1 |
numeric | String | 8 ビット文字1 |
nvarchar | String | 8 ビット文字1 |
nvarchar(MAX) | Stream2 | 8 ビット文字1 |
ntext6 | Stream2 | 8 ビット文字1 |
real | Float | 8 ビット文字1 |
smalldatetime | Datetime | 8 ビット文字1 |
smallint | Integer | 8 ビット文字1 |
smallmoney | String | 8 ビット文字1 |
sql_variant7 | String | 8 ビット文字1 |
text8 | Stream2 | 8 ビット文字1 |
time4 | Datetime | 適用なし |
timestamp | String | 8 ビット文字1 |
tinyint | Integer | 8 ビット文字1 |
UDT | Stream2 | バイナリ3 |
UNIQUEIDENTIFIER | String9 | 8 ビット文字1 |
varbinary | Stream2 | バイナリ3 |
varbinary (max) | Stream2 | バイナリ3 |
varchar | String | 8 ビット文字1 |
varchar(MAX) | Stream2 | 8 ビット文字1 |
xml | Stream2 | 8 ビット文字1 |
データは、システムの Windows ロケール設定のコード ページで指定されている 8 ビット文字で返されます。 任意のマルチバイト文字またはこのコード ページにマップされていない文字は、1 バイトの疑問符 (?) 文字に置き換えられます。
sqlsrv_fetch_array または sqlsrv_fetch_object を使用して既定の PHP 型が Stream であるデータを取得する場合、データはストリームと同じエンコードの文字列として返されます。 たとえば、sqlsrv_fetch_array を使用して SQL Server の binary 型を取得した場合、既定の戻り値の型はバイナリ文字列です。
データは、エンコードまたは変換されず、生のバイト ストリームとしてサーバーから返されます。
日付と時刻の型は、文字列として取得できます。 詳細については、「 方法: SQLSRV ドライバーを利用し、日付/時刻型を取得する」を参照してください。
これは、varbinary(max) 型にマップされる従来の型です。
これは、nvarchar(max) 型にマップされる従来の型です。
sql_variant は、双方向パラメーターまたは出力パラメーターではサポートされていません。
これは、varchar(max) 型にマップされる従来の型です。
UNIQUEIDENTIFIER は、次の正規表現によって表される GUID です。
[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-f]{4}-[0-9a-fA-f]{4}-[0-9a-fA-F]{12}
SQL Server 2008 でのその他の新しいデータ型と機能
SQL Server 2008 の新しいデータ型で、列の外部に存在するもの (テーブル値パラメーターなど) は、Microsoft SQL Server 用 Drivers for PHP ではサポートされていません。 次の表は、SQL Server 2008 の新機能の PHP によるサポートをまとめたものです。
機能 | PHP のサポート |
---|---|
テーブル値パラメーター | いいえ |
スパース列 | Partial |
Null ビット圧縮 | はい |
大きな CLR ユーザー定義型 (UDT) | はい |
サービス プリンシパル名 | いいえ |
MERGE | はい |
FILESTREAM | Partial |
部分的な型のサポートとは、その列の型をプログラムでクエリできないことを意味します。