默认的 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

  1. 数据将以在系统中设置的 Windows 区域设置的代码页中指定的 8 位字符的形式返回。任何多字节字符或未映射到此代码页中的字符将用单字节问号 (?) 字符替换。
  2. 如果使用 sqlsrv_fetch_arraysqlsrv_fetch_object 检索默认 PHP 类型为 Stream 的数据,则该数据将以与该流具有相同编码的字符串形式返回。例如,如果使用 sqlsrv_fetch_array 检索到 SQL Server 二进制类型,则默认的返回类型将是二进制字符串。
  3. 数据以原始字节流的形式从相应服务器返回,而不执行编码或转换。
  4. 此为映射到 varbinary(max) 类型的旧类型。
  5. 此为映射到 nvarchar(max) 类型的旧类型。
  6. 此为映射到 varchar(max) 类型的旧类型。
  7. 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}
  8. 日期和时间类型可以字符串的形式检索。有关详细信息,请参阅如何以字符串的形式检索日期和时间类型

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

在 SQL Server Driver for PHP 的 1.1 版中不支持在 SQL Server 2008 中新增且存在于列外(例如表值参数)的数据类型。下表汇总了对于新的 SQL Server 2008 功能的 PHP 支持。

功能 PHP 支持

表值参数

稀疏列

部分

Null 位压缩

大型 CLR 用户定义类型 (UDT)

服务主体名称

MERGE

FILESTREAM

部分

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

另请参见

参考

sqlsrv_field_metadata

概念

SQLSRV 常量

其他资源

转换数据类型
PHP 类型
数据类型 (Transact-SQL)