이 항목에서는 오류 및 경고를 처리하기 위해 SQL Server Driver for PHP를 구성하는 방법에 대해 설명합니다.
기본적으로 SQL Server Driver for PHP는 경고를 오류로 처리합니다. 따라서 오류나 경고를 생성하는 sqlsrv 함수를 호출하면 false가 반환됩니다. 이 동작을 해제하려면 sqlsrv_configure 함수를 사용하십시오. 스크립트 시작 부분에 다음 코드 줄이 포함된 경우 오류 없이 경고만 생성하는 sqlsrv 함수는 false를 반환하지 않습니다.
sqlsrv_configure("WarningsReturnAsErrors", 0);
다음 코드 줄에서는 경고가 오류로 처리되는 기본 동작으로 재설정합니다.
sqlsrv_configure("WarningsReturnAsErrors", 1);
참고
SQLSTATE 값 01000, 01001, 01003, 01S02에 해당하는 경고는 오류로 처리되지 않습니다. 구성에 관계없이 이러한 상태 중 하나에 해당하는 경고만 생성하는 sqlsrv 함수는 false를 반환하지 않습니다.
WarningsReturnAsErrors 값을 php.ini 파일에도 설정할 수 있습니다. 예를 들어, php.ini 파일의 [sqlsrv] 섹션에 다음 항목을 삽입하면 기본 동작이 해제됩니다.
sqlsrv.WarningsReturnAsErrors = 0
오류 및 경고 정보를 검색하는 방법은 sqlsrv_errors 및 방법: 오류 및 경고 처리를 참조하십시오.
예
다음 코드 예제에서는 기본 오류 처리 동작을 해제하는 방법을 보여 주기 위해 Transact-SQL PRINT 명령을 사용하여 경고를 생성합니다. PRINT 명령에 대한 자세한 내용은 PRINT (Transact-SQL)를 참조하십시오.
이 예제에서는 먼저 경고를 생성하는 쿼리를 실행하여 기본 오류 처리 동작을 보여 줍니다. 이 경고는 오류로 처리됩니다. 오류 처리 구성을 변경한 후 같은 쿼리를 실행하면 이 경고는 오류로 처리되지 않습니다.
이 예제에서는 SQL Server가 로컬 컴퓨터에 설치되어 있다고 가정합니다. 명령줄에서 이 예제를 실행하면 모든 출력이 콘솔에 기록됩니다.
<?php
/* Connect to the local server using Windows Authentication. */
$serverName = "(local)";
$conn = sqlsrv_connect( $serverName );
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
/* The Transact-SQL PRINT statement can be used to return
informational or warning messages*/
$tsql = "PRINT 'The PRINT statement can be used ";
$tsql .= "to return user-defined warnings.'";
/* Execute the query and print any errors. */
$stmt1 = sqlsrv_query( $conn, $tsql);
if($stmt1 === false)
{
echo "By default, warnings are treated as errors:\n";
/* Dump errors in the error collection. */
print_r(sqlsrv_errors(SQLSRV_ERR_ERRORS));
}
/* Disable warnings as errors behavior. */
sqlsrv_configure("WarningsReturnAsErrors", 0);
/* Execute the same query and print any errors. */
$stmt2 = sqlsrv_query( $conn, $tsql);
if($stmt2 === false)
{
/* Dump errors in the error collection. */
/* Since the warning generated by the query will not be treated as
an error, this block of code will not be executed. */
print_r(sqlsrv_errors(SQLSRV_ERR_ERRORS));
}
else
{
echo "After calling ";
echo "sqlsrv_configure('WarningsReturnAsErrors', 0), ";
echo "warnings are not treated as errors.";
}
/*Close the connection. */
sqlsrv_close($conn);
?>