Share via


방법: SQLSRV 드라이버를 사용하여 이진 데이터를 스트림으로 검색

PHP 드라이버 다운로드

스트림으로 데이터를 검색하는 기능은 MICROSOFT Drivers for PHP for SQL Server의 SQLSRV 드라이버에서만 사용할 수 있으며, PDO_SQLSRV 드라이버에서는 사용할 수 없습니다.

MICROSOFT Drivers for PHP for SQL Server는 서버에서 대량의 이진 데이터를 검색하기 위해 PHP 스트림을 활용합니다. 이 항목에서는 이진 데이터를 스트림으로 검색하는 방법을 보여줍니다.

스트림을 사용하여 이미지와 같은 이진 데이터를 검색하고, 전체 개체를 스크립트 메모리로 로드하는 대신 데이터 청크를 검색하여 스크립트 메모리를 절약합니다.

예시

다음 예시에서는 AdventureWorks 데이터베이스의 Production.ProductPhoto 테이블에서 이진 데이터(이 경우 이미지)를 검색합니다. 이미지는 스트림으로 검색되고 브라우저에 표시됩니다.

이미지 데이터를 스트림으로 검색하려면 반환 유형이 이진 스트림으로 지정된 sqlsrv_fetchsqlsrv_get_field를 사용합니다. 반환 형식은 SQLSRV_PHPTYPE_STREAM 상수를 사용하여 지정됩니다. sqlsrv 상수에 대한 자세한 내용은 상수(Microsoft Drivers for PHP for SQL Server)를 참조하세요.

이 예시에서는 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 LargePhoto   
         FROM Production.ProductPhoto   
         WHERE ProductPhotoID = ?";  
  
/* Set the parameter values and put them in an array. */  
$productPhotoID = 70;  
$params = array( $productPhotoID);  
  
/* Execute the query. */  
$stmt = sqlsrv_query($conn, $tsql, $params);  
if( $stmt === false )  
{  
     echo "Error in statement execution.</br>";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve and display the data.  
The return data is retrieved as a binary stream. */  
if ( sqlsrv_fetch( $stmt ) )  
{  
   $image = sqlsrv_get_field( $stmt, 0,   
                      SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY));  
   header("Content-Type: image/jpg");  
   fpassthru($image);  
}  
else  
{  
     echo "Error in retrieving data.</br>";  
     die(print_r( sqlsrv_errors(), true));  
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

예시에서 반환 형식을 지정하여 PHP 반환 형식을 이진 스트림으로 지정하는 방법을 보여줍니다. 기술적으로 이 예시에서는 필요하지 않습니다. 왜냐하면 LargePhoto 필드의 SQL Server 유형이 varbinary(max)이므로 기본적으로 이진 스트림으로 반환되기 때문입니다. 기본 PHP 데이터 형식에 대한 자세한 내용은 기본 PHP 데이터 형식을 참조하세요. PHP 반환 형식을 지정하는 방법에 대한 자세한 내용은 방법: PHP 데이터 형식 지정을 참조하세요.

참고 항목

데이터 검색

SQLSRV 드라이버를 사용하여 스트림으로 데이터 검색

설명서의 코드 예시 정보