次の方法で共有


sqlsrv_field_metadata

準備されたステートメントのフィールドのメタデータを取得します。ステートメントの準備については、「sqlsrv_query」または「sqlsrv_prepare」を参照してください。sqlsrv_field_metadata は、準備された任意のステートメントの実行の前後に呼び出すことができます。

構文

sqlsrv_field_metadata( resource $stmt)

パラメータ

$stmt: フィールド メタデータの検索対象となるステートメント リソース。

戻り値

配列の array または false。この配列には、結果セットのフィールドごとに 1 つの配列が格納されます。各サブ配列には、次の表に示すキーが含まれています。フィールド メタデータの取得中にエラーが発生した場合は、false が返されます。

キー 説明

Name

フィールドに対応する列の名前。

Type

SQL 型に対応する数値。

Size

文字型 (char(n)、varchar(n)、nchar(n)、nvarchar(n)、XML) のフィールドの文字数。バイナリ型 (binary(n)、varbinary(n)、UDT) フィールドのバイト数。その他の SQL Server データ型の場合は NULL

Precision

有効桁数が一定でない型 (real、numeric、decimal、datetime2、datetimeoffset、および time) の有効桁数。その他の SQL Server データ型の場合は NULL

Scale

小数点以下桁数が一定でない型 (numeric、decimal、datetime2、datetimeoffset、および time) の小数点以下桁数。その他の SQL Server データ型の場合は NULL

Nullable

列で NULL が許容されるかどうかを示す列挙値。許容される場合は SQLSRV_NULLABLE_YES、許容されない場合は SQLSRV_NULLABLE_NO、許容されるかどうかが不明である場合は 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)