默认的 PHP 数据类型
从服务器检索数据时,如果用户未指定 PHP 数据类型,则 SQL Server Driver for PHP 会将数据转换为默认的 PHP 数据类型。下表列出了 SQL Server 数据类型(从服务器检索到的数据类型)、默认的 PHP 数据类型(数据转换后的数据类型)以及流和字符串的默认编码方式。有关如何在从服务器检索数据时指定数据类型的详细信息,请参阅如何指定 PHP 数据类型。
SQL Server 类型 | 默认的 PHP 类型 | 默认编码 |
---|---|---|
bigint |
String |
8 位字符1 |
binary |
Stream2 |
二进制3 |
bit |
Integer |
8 位字符1 |
char |
String |
8 位字符1 |
datetime8 |
Datetime |
不适用 |
decimal |
String |
8 位字符1 |
float |
Float |
8 位字符1 |
image4 |
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 |
ntext5 |
Stream2 |
8 位字符1 |
real |
Float |
8 位字符1 |
smalldatetime |
Datetime |
8 位字符1 |
smallint |
Integer |
8 位字符1 |
smallmoney |
String |
8 位字符1 |
sql_variant |
String |
8 位字符1 |
text6 |
Stream2 |
8 位字符1 |
timestamp |
String |
8 位字符1 |
tinyint |
Integer |
8 位字符1 |
UDT |
Stream2 |
二进制3 |
uniqueidentifier |
String7 |
8 位字符1 |
varbinary |
Stream2 |
二进制3 |
varbinary(MAX) |
Stream2 |
二进制3 |
varchar |
String |
8 位字符1 |
varchar(MAX) |
Stream2 |
8 位字符1 |
variant |
不支持 |
不支持 |
xml |
Stream2 |
8 位字符1 |
下表列出了在 SQL Server Driver for PHP 的 1.1 版中为支持 SQL Server 2008 中的数据类型而添加的类型。
SQL Server 类型 | 默认的 PHP 类型 | 默认编码 |
---|---|---|
date8 |
Datetime |
不适用 |
time8 |
Datetime |
不适用 |
datetime28 |
Datetime |
不适用 |
datetimeoffset8 |
Datetime |
不适用 |
geography |
STREAM |
二进制3 |
几何图形 |
STREAM |
二进制3 |
- 数据将以在系统中设置的 Windows 区域设置的代码页中指定的 8 位字符的形式返回。任何多字节字符或未映射到此代码页中的字符将用单字节问号 (?) 字符替换。
- 如果使用 sqlsrv_fetch_array 或 sqlsrv_fetch_object 检索默认 PHP 类型为 Stream 的数据,则该数据将以与该流具有相同编码的字符串形式返回。例如,如果使用 sqlsrv_fetch_array 检索到 SQL Server 二进制类型,则默认的返回类型将是二进制字符串。
- 数据以原始字节流的形式从相应服务器返回,而不执行编码或转换。
- 此为映射到 varbinary(max) 类型的旧类型。
- 此为映射到 nvarchar(max) 类型的旧类型。
- 此为映射到 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 Driver for PHP 的 1.1 版中不支持在 SQL Server 2008 中新增且存在于列外(例如表值参数)的数据类型。下表汇总了对于新的 SQL Server 2008 功能的 PHP 支持。
功能 | PHP 支持 |
---|---|
表值参数 |
否 |
稀疏列 |
部分 |
Null 位压缩 |
是 |
大型 CLR 用户定义类型 (UDT) |
是 |
服务主体名称 |
否 |
MERGE |
是 |
FILESTREAM |
部分 |
部分类型支持意味着您无法以编程方式查询列的类型。