默认 PHP 数据类型

下载 PHP 驱动程序

在从服务器检索数据时,如果用户未指定任何 PHP 数据类型, Microsoft Drivers for PHP for SQL Server 会将数据转换为默认 PHP 数据类型。

当使用 PDO_SQLSRV 驱动程序返回数据时,数据类型将是 int 或 string。

本主题的其余部分讨论使用 SQLSRV 驱动程序的默认数据类型。

下表列出了 SQL Server 数据类型(从服务器检索的数据类型)、默认 PHP 数据类型(数据转换到的数据类型)以及流和字符串的默认编码。 有关如何在从服务器检索数据时指定数据类型的详细信息,请参阅 How to: Specify PHP Data Types

SQL Server 类型 默认 PHP 类型 默认编码
bigint String 8 位字符1
binary Stream2 Binary3
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 Binary3
geometry STREAM Binary3
image5 Stream2 Binary3
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 Binary3
uniqueidentifier 字符串9 8 位字符1
varbinary Stream2 Binary3
varbinary(MAX) Stream2 Binary3
varchar String 8 位字符1
varchar(MAX) Stream2 8 位字符1
xml Stream2 8 位字符1
  1. 数据以在系统上设置的 Windows 区域设置的代码页中指定的 8 位字符的形式返回。 任何多字节字符或未映射到此代码页中的字符都会替换为单字节问号 (?) 字符。

  2. 如果 sqlsrv_fetch_arraysqlsrv_fetch_object 用于检索具有默认 PHP 类型 Stream 的字符串的数据,该数据将返回为具有与流相同的编码的字符串。 例如,如果 SQL Server 二进制类型使用 sqlsrv_fetch_array进行检索,默认返回类型将是二进制字符串

  3. 数据以原始字节流的形式从服务器返回,无需执行编码或转换。

  4. 日期和时间类型可以字符串的形式检索。 有关详细信息,请参阅 如何:使用 SQLSRV 驱动程序以字符串的形式检索日期和时间类型

  5. 这是映射到 varbinary(max) 类型的旧类型。

  6. 这是映射到 nvarchar(max) 类型的旧类型。

  7. 双向或 output 参数中不支持 sql_variant。

  8. 这是映射到 varchar(max) 类型的旧类型。

  9. 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}

其他 New SQL Server 2008 数据类型和功能

SQL Server 2008 中新增的和存在于列外(如表值参数)的数据类型在 Microsoft Drivers for PHP for SQL Server 中不受支持。 下表总结了对新的 SQL Server 2008 功能的 PHP 支持。

Feature PHP 支持
表值参数
稀疏列 部分
Null 位压缩
大型 CLR 用户定义的类型 (UDT)
服务主体名称
MERGE
FILESTREAM 部分

部分类型支持意味着你无法以编程方式查询列的类型。

另请参阅

常量 (Microsoft Drivers for PHP for SQL Server)

转换数据类型

PHP 类型

数据类型 (Transact-SQL)

sqlsrv_field_metadata