다음을 통해 공유


방법: PHP 데이터 형식 지정

다음 단계에서는 서버에서 데이터를 검색할 때 SQL Server Driver for PHP를 사용하여 PHP 데이터 형식을 지정하는 방법을 요약하여 보여 줍니다.

  1. sqlsrv_query 또는 sqlsrv_prepare/sqlsrv_execute 조합을 사용하여 Transact-SQL 쿼리를 설정하고 실행합니다.
  2. sqlsrv_fetch를 사용하여 데이터 행을 읽을 수 있도록 합니다.
  3. 원하는 PHP 데이터 형식이 세 번째 매개 변수(선택 사항)로 지정된 sqlsrv_get_field를 사용하여 반환되는 행에서 필드 데이터를 검색합니다. 선택 사항인 세 번째 매개 변수를 지정하지 않은 경우 기본 PHP 형식에 따라 데이터가 반환됩니다. 기본 PHP 반환 형식에 대한 자세한 내용은 기본 PHP 데이터 형식을 참조하십시오.
    PHP 데이터 형식을 지정하는 데 사용되는 상수에 대한 자세한 내용은 SQLSRV 상수의 PHPTYPE 섹션을 참조하십시오.

다음 예제에서는 AdventureWorks 데이터베이스의 Production.ProductReview 테이블에서 행을 검색합니다. 반환되는 각 행에서 ReviewDate 필드는 문자열로 검색되고 Comments 필드는 스트림으로 검색됩니다. 스트림 데이터는 PHP fpassthru 함수를 사용하여 표시됩니다.

이 예제에서는 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));
}

/* Set up the Transact-SQL query. */
$tsql = "SELECT ReviewerName, 
                ReviewDate,
                Rating, 
                Comments 
         FROM Production.ProductReview 
         WHERE ProductID = ? 
         ORDER BY ReviewDate DESC";

/* Set the parameter value. */
$productID = 709;
$params = array( $productID);

/* Execute the query. */
$stmt = sqlsrv_query($conn, $tsql, $params);
if( $stmt === false )
{
     echo "Error in statement execution.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve and display the data. The first and third fields are
retrieved according to their default types, strings. The second field
is retrieved as a string with 8-bit character encoding. The fourth
field is retrieved as a stream with 8-bit character encoding.*/
while ( sqlsrv_fetch( $stmt))
{
   echo "Name: ".sqlsrv_get_field( $stmt, 0 )."\n";
   echo "Date: ".sqlsrv_get_field( $stmt, 1, 
                       SQLSRV_PHPTYPE_STRING( SQLSRV_ENC_CHAR))."\n";
   echo "Rating: ".sqlsrv_get_field( $stmt, 2 )."\n";
   echo "Comments: ";
   $comments = sqlsrv_get_field( $stmt, 3, 
                            SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR));
   fpassthru( $comments);
   echo "\n"; 
}

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

이 예제에서 두 번째 필드(ReviewDate)를 문자열로 검색하면 SQL Server DATETIME 데이터 형식의 밀리초 정확도가 유지됩니다. 기본적으로 SQL Server DATETIME 데이터 형식은 밀리초 정확도가 손실되는 PHP DateTime 개체로 검색됩니다.

네 번째 필드(Comments)를 스트림으로 검색하는 것은 데모용입니다. 기본적으로 SQL Server 데이터 형식 nvarchar(3850)는 대부분의 경우 허용되는 문자열로 검색됩니다.

참고

sqlsrv_field_metadata 함수를 사용하면 쿼리를 실행하기 전에 형식 정보를 비롯한 필드 정보를 확인할 수 있습니다.

참고 항목

태스크

방법: 출력 매개 변수 검색
방법: 입/출력 매개 변수 검색

개념

설명서에 포함된 코드 예제 정보

관련 자료

데이터 검색