預設 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 字串 8 位元字元1
二進位 資料流2 二進位3
位元 整數 8 位元字元1
Char 字串 8 位元字元1
date4 日期時間 不適用
datetime4 日期時間 不適用
datetime24 日期時間 不適用
datetimeoffset4 日期時間 不適用
十進位 字串 8 位元字元1
float Float 8 位元字元1
地理 串流 二進位3
幾何 串流 二進位3
image5 資料流2 二進位3
int 整數 8 位元字元1
金錢 字串 8 位元字元1
NCHAR 字串 8 位元字元1
數值 字串 8 位元字元1
nvarchar 字串 8 位元字元1
nvarchar(MAX) 資料流2 8 位元字元1
ntext6 資料流2 8 位元字元1
真實 Float 8 位元字元1
smalldatetime 日期時間 8 位元字元1
smallint 整數 8 位元字元1
小額金錢 字串 8 位元字元1
sql_variant7 字串 8 位元字元1
text8 資料流2 8 位元字元1
time4 日期時間 不適用
時間戳記 字串 8 位元字元1
Tinyint 整數 8 位元字元1
UDT 資料流2 二進位3
唯一識別碼 String9 8 位元字元1
varbinary 資料流2 二進位3
varbinary(MAX) 資料流2 二進位3
varchar 字串 8 位元字元1
varchar(MAX) 資料流2 8 位元字元1
Xml 資料流2 8 位元字元1
  1. 資料會以 8 位元字元傳回,其格式由系統上所設定的 Windows 地區設定中的字碼頁所指定。 任何多位元組字元,或無法對應至此字碼頁的字元,都會以單一位元組的問號 (?) 字元替代。

  2. 如果 sqlsrv_fetch_array 或 sqlsrv_fetch_object 用來擷取預設 PHP 類型為「資料流」的資料,會以字串形式 (其編碼方式與資料流相同) 傳回資料。 例如,如果使用 sqlsrv_fetch_array 擷取 SQL Server 二進位類型,則預設傳回型別會是二進位字串。

  3. 資料會以原始位元組資料流形式從伺服器傳回,而不需執行編碼或轉譯。

  4. 日期和時間類型可以擷取為字串。 如需詳細資訊,請參閱 如何:使用 SQLSRV 驅動程式,以字串的形式擷取日期和時間類型。

  5. 這是對應至 varbinary(max) 類型的傳統類型。

  6. 這是對應至 nvarchar(max) 類型的傳統類型。

  7. 不支援在雙向或輸出參數中使用 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}

其他新的 SQL Server 2008 資料類型和功能

Microsoft Drivers for PHP for SQL Server 不支援 SQL Server 2008 的新資料類型,也不支援存在於資料行外的資料類型 (例如資料表值參數)。 下表摘要說明 SQL Server 2008 新功能的 PHP 支援。

功能 PHP 支援
資料表值參數 否
稀疏資料行 部分
空值位元壓縮 是
大型 CLR 使用者定義型別 (UDT) 是
服務主體名稱 否
MERGE 是
FILESTREAM 部分

部分類型支援表示您無法以程式設計方式查詢資料行的類型。