共用方式為


sqlsrv_field_metadata

針對已備妥之陳述式的欄位擷取中繼資料。如需有關準備陳述式的詳細資訊,請參閱<sqlsrv_query>或<sqlsrv_prepare>。請注意,可以在任何備妥的陳述式上呼叫 sqlsrv_field_metadata (執行前或執行後)。

語法

sqlsrv_field_metadata( resource $stmt)

參數

$stmt:搜尋欄位中繼資料所針對的陳述式資源。

傳回值

陣列的 arrayfalse。陣列是由結果集內每個欄位的一個陣列所組成。每一個子陣列都有索引鍵,如下表所述。如果擷取欄位中繼資料時發生錯誤,就會傳回 false

索引鍵 描述

Name

此欄位所對應的資料行名稱。

Type

對應到 SQL 類型的數值。

Size

字元類型 (char(n)、varchar(n)、nchar(n)、nvarchar(n)、XML) 之欄位的字元數。二進位類型 (binary(n)、varbinary(n)、UDT) 之欄位的位元組數。NULL 代表其他 SQL Server 資料類型。

Precision

可變有效位數之類型 (real、numeric、decimal、datetime2、datetimeoffset 和 time) 的有效位數。NULL 代表其他 SQL Server 資料類型。

Scale

可變小數位數之類型 (numeric、decimal、datetime2、datetimeoffset 和 time) 的小數位數。NULL 代表其他 SQL Server 資料類型。

Nullable

指出此資料行可為 Null (SQLSRV_NULLABLE_YES)、此資料行不可為 Null (SQLSRV_NULLABLE_NO) 或是不知道此資料行是否可為 Null (SQLSRV_NULLABLE_UNKNOWN) 的列舉值。

下表針對每個子陣列的索引鍵提供詳細資訊 (如需有關這些類型的詳細資訊,請參閱 SQL Server 文件集):

SQL Server 2008 資料類型 類型 最小/最大有效位數 最小/最大小數位數 大小

bigint

-5

8

binary

-2

0 < n < 8000 1

bit

-7

char

1

0 < n < 8000 1

date

91

10/10

0/0

datetime

93

23/23

3/3

datetime2

93

19/27

0/7

datetimeoffset

-155

26/34

0/7

decimal

3

1/38

0/有效位數值

float

6

4/8

image

-4

2 GB

int

4

money

3

19/19

4/4

nchar

-8

0 < n < 4000 1

ntext

-10

1 GB

numeric

2

1/38

0/有效位數值

nvarchar

-9

0 < n < 4000 1

real

7

4/4

smalldatetime

93

16/16

0/0

smallint

5

2 位元組

smallmoney

3

10/10

4/4

text

-1

2 GB

time

-154

8/16

0/7

timestamp

-2

8 位元組

tinyint

-6

1 位元組

udt

-151

變數

uniqueidentifier

-11

16

varbinary

-3

0 < n < 8000 1

varchar

12

0 < n < 8000 1

xml

-152

0

(1) 零 (0) 表示允許最大的大小。

可為 Null 的索引鍵可以是 yes 或 no。

範例

下列範例會建立陳述式資源,然後擷取及顯示欄位中繼資料。此範例假設 SQL Server 和 AdventureWorks 資料庫已經安裝在本機電腦上。當從命令列執行此範例時,所有輸出都會寫入主控台。

<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Could not connect.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Prepare the statement. */
$tsql = "SELECT ReviewerName, Comments FROM Production.ProductReview";
$stmt = sqlsrv_prepare( $conn, $tsql);

/* Get and display field metadata. */
foreach( sqlsrv_field_metadata( $stmt) as $fieldMetadata)
{
      foreach( $fieldMetadata as $name => $value)
      {
           echo "$name: $value\n";
      }
      echo "\n";
}

/* Note: sqlsrv_field_metadata can be called on any statement
resource, pre- or post-execution. */

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

另請參閱

概念

SQLSRV 常數
有關文件集中的程式碼範例

其他資源

API 參考 (SQL Server Driver for PHP)