SQL Server Driver for PHP에서는 서버에서 대량의 이진 데이터를 검색하기 위해 PHP 스트림을 사용합니다. 이 항목에서는 이진 데이터를 스트림으로 검색하는 방법을 보여 줍니다.
스트림을 사용하여 이미지와 같은 이진 데이터를 검색하면 전체 개체를 스크립트 메모리로 로드하는 대신 데이터 청크를 검색하기 때문에 대량의 스크립트 메모리를 사용하지 않아도 됩니다.
예
다음 예제에서는 AdventureWorks 데이터베이스의 Production.ProductPhoto 테이블에서 이진 데이터(이 경우에는 이미지)를 검색합니다. 이미지는 스트림으로 검색되어 브라우저에 표시됩니다.
반환 형식이 이진 스트림으로 지정된 sqlsrv_fetch 및 sqlsrv_get_field를 사용하여 이미지 데이터를 스트림으로 검색할 수 있습니다. 반환 형식은 SQLSRV_PHPTYPE_STREAM 상수를 사용하여 지정합니다. sqlsrv 상수에 대한 자세한 내용은 SQLSRV 상수를 참조하십시오.
이 예제에서는 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 데이터 형식 지정을 참조하십시오.