방법: PHP 데이터 형식 지정

PHP 드라이버 다운로드

PDO_SQLSRV 드라이버를 사용하는 경우 서버에서 데이터를 검색할 때 PDOStatement::bindColumn 및 PDOStatement::bindParam을 사용하여 PHP 데이터 형식을 지정할 수 있습니다. 자세한 내용은 PDOStatement::bindColumnPDOStatement::bindParam을 참조하세요.

다음 단계에서는 SQLSRV 드라이버를 사용하여 서버에서 데이터를 검색할 때 PHP 데이터 형식을 지정하는 방법을 요약하여 설명합니다.

  1. sqlsrv_query 또는 sqlsrv_prepare/sqlsrv_execute 조합을 사용하여 Transact-SQL 쿼리를 설정하고 실행합니다.

  2. sqlsrv_fetch를 사용하여 데이터 행을 읽을 수 있도록 만듭니다.

  3. 원하는 PHP 데이터 형식을 선택적 세 번째 매개 변수로 지정하여 sqlsrv_get_field를 사용하여 반환된 행에서 필드 데이터를 검색합니다. 선택적인 세 번째 매개 변수를 지정하지 않으면 데이터가 기본 PHP 형식에 따라 반환됩니다. 기본 PHP 반환 형식에 대한 자세한 내용은 기본 PHP 데이터 형식을 참조하세요.

    PHP 데이터 형식을 지정하는 데 사용하는 상수에 대한 자세한 내용은 상수(Microsoft Drivers for PHP for SQL Server)의 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 함수는 쿼리를 실행하기 전에 유형 정보를 포함한 필드 정보를 가져오는 방법을 제공합니다.

참고 항목

데이터 검색

설명서의 코드 예시 정보

방법: SQLSRV 드라이버를 사용하여 출력 매개 변수 검색

방법: SQLSRV 드라이버를 사용하여 입력 및 출력 매개 변수 검색