다음을 통해 공유


sqlsrv_fetch_array

PHP 드라이버 다운로드

데이터의 다음 행을 숫자로 인덱싱된 배열, 결합 배열 또는 둘 다로 검색합니다.

구문

  
sqlsrv_fetch_array( resource $stmt[, int $fetchType [, row[, ]offset]])  

매개 변수

$stmt: 실행된 문에 해당하는 문 리소스입니다.

$fetchType [OPTIONAL]: 미리 정의된 상수입니다. 이 매개 변수는 다음 표에 나열된 값 중 하나를 사용할 수 있습니다.

설명
SQLSRV_FETCH_NUMERIC 다음 데이터 행은 숫자 배열로 반환됩니다.
SQLSRV_FETCH_ASSOC 데이터의 다음 행이 결합형 배열로 반환됩니다. 배열 키는 결과 집합의 열 이름입니다.
SQLSRV_FETCH_BOTH 다음 데이터 행은 숫자 배열과 결합형 배열로 반환됩니다. 기본값입니다.

[선택 사항]: 버전 1.1에 추가되었습니다. 다음 값 중 하나로 스크롤 가능 커서를 사용하는 결과 집합에서 액세스할 행을 지정합니다. (행지정하는 경우 기본값을 지정하더라도 fetchtype을 명시적으로 지정해야 합니다.)

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

이러한 값에 대한 자세한 내용은 커서 유형 지정 및 행 선택을 참조하세요. 스크롤 가능한 커서 지원은 MICROSOFT Drivers for PHP for SQL Server 버전 1.1에 추가되었습니다.

offset [선택 사항]: 검색할 행을 지정하는 데 SQLSRV_SCROLL_ABSOLUTE 및 SQLSRV_SCROLL_RELATIVE와 함께 사용됩니다. 결과 집합의 첫 번째 레코드는 0입니다.

Return Value

데이터 행을 검색하면 배열반환됩니다. 검색 할 행이 더 이상 없으면 null 이 반환됩니다. 오류가 발생하면 false 가 반환됩니다.

$fetchType 매개 변수의 값에 따라 반환된 배열은 숫자로 인덱싱된 배열, 결합형 배열 또는 둘 다일 수 있습니다. 기본적으로 숫자 키와 결합 키가 모두 있는 배열 이 반환됩니다. 반환된 배열에 있는 값의 데이터 형식은 기본 PHP 데이터 형식입니다. 기본 PHP 데이터 형식에 대한 자세한 내용은 기본 PHP 데이터 형식을 참조하세요.

설명

이름이 없는 열이 반환되면 배열 요소에 대한 결합형 키는 빈 문자열("")입니다. 예를 들어 데이터베이스 테이블에 값을 삽입하고 서버에서 생성된 기본 키를 검색하는 이 Transact-SQL 문을 고려합니다.

INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);  
SELECT SCOPE_IDENTITY()

이 문의 부분에서 반환 SELECT SCOPE_IDENTITY() 된 결과 집합이 연관 배열로 검색되는 경우 반환된 열에 이름이 없기 때문에 반환된 값의 키는 빈 문자열("")이 됩니다. 이를 방지하려면 결과를 숫자 배열로 검색하거나 Transact-SQL 문에서 반환된 열의 이름을 지정할 수 있습니다. 다음 문은 Transact-SQL에서 열 이름을 지정하는 한 가지 방법입니다.

SELECT SCOPE_IDENTITY() AS PictureID

결과 집합에 이름이 없는 여러 열이 포함된 경우 이름 없는 마지막 열의 값이 빈 문자열("") 키에 할당됩니다.

결합형 배열 예제

다음 예제에서는 결과 집합의 각 행을 결합형 배열로 검색합니다. 이 예제에서는 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 and execute the query. */  
$tsql = "SELECT FirstName, LastName  
         FROM Person.Contact  
         WHERE LastName='Alan'";  
$stmt = sqlsrv_query( $conn, $tsql);  
if( $stmt === false)  
{  
     echo "Error in query preparation/execution.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve each row as an associative array and display the results.*/  
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))  
{  
      echo $row['LastName'].", ".$row['FirstName']."\n";  
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

인덱싱된 배열 예제

다음 예제에서는 결과 집합의 각 행을 숫자 인덱싱된 배열로 검색합니다.

이 예제에서는 지정된 날짜와 재고 수량(StockQty)이 지정된 값보다 작은 제품에 대한 AdventureWorks 데이터베이스의 Purchase.PurchaseOrderDetail 테이블에서 제품 정보를 검색합니다.

이 예시에서는 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));  
}  
  
/* Define the query. */  
$tsql = "SELECT ProductID,  
                UnitPrice,  
                StockedQty   
         FROM Purchasing.PurchaseOrderDetail  
         WHERE StockedQty < 3   
         AND DueDate='2002-01-29'";  
  
/* Execute the query. */  
$stmt = sqlsrv_query( $conn, $tsql);  
if ( $stmt )  
{  
     echo "Statement executed.\n";  
}   
else   
{  
     echo "Error in statement execution.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Iterate through the result set printing a row of data upon each  
iteration.*/  
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))  
{  
     echo "ProdID: ".$row[0]."\n";  
     echo "UnitPrice: ".$row[1]."\n";  
     echo "StockedQty: ".$row[2]."\n";  
     echo "-----------------\n";  
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

sqlsrv_fetch_array 함수는 항상 기본 PHP 데이터 형식에 따라 데이터를 반환합니다. PHP 데이터 형식을 지정하는 방법에 대한 자세한 내용은 방법: PHP 데이터 형식 지정을 참조 하세요.

이름이 없는 필드를 검색하면 배열 요소의 결합 키가 빈 문자열("")이 됩니다. 자세한 내용은 sqlsrv_fetch_array 참조하세요.

참고 항목

SQLSRV 드라이버 API 참조

데이터 검색

설명서의 코드 예시 정보

Microsoft Drivers for PHP for SQL Server 드라이버 프로그래밍 가이드