다음을 통해 공유


방법: SQL Server 데이터 형식 지정(SQL Server Driver for PHP)

이 항목에서는 서버로 보내는 데이터의 SQL Server 데이터 형식을 지정하는 방법에 대해 설명합니다.

SQL Server 데이터 형식을 지정하려면 데이터를 삽입 또는 업데이트하는 쿼리를 준비하거나 실행할 때 선택적 $params 배열을 사용해야 합니다. $params 배열의 구조와 구문에 대한 자세한 내용은 sqlsrv_query 또는 sqlsrv_prepare를 참조하십시오.

다음 단계에서는 데이터를 서버로 보낼 때 SQL Server 데이터 형식을 지정하는 방법을 요약하여 보여 줍니다.

참고

SQL Server 데이터 형식을 지정하지 않은 경우 기본 형식이 사용됩니다. 기본 SQL Server 데이터 형식에 대한 자세한 내용은 기본 SQL Server 데이터 형식을 참조하십시오.

  1. 데이터를 삽입 또는 업데이트하는 Transact-SQL 쿼리를 정의합니다. 쿼리의 매개 변수 값에 대한 자리 표시자로 물음표(?)를 사용합니다.

  2. Transact-SQL 쿼리의 자리 표시자에 해당하는 PHP 변수를 초기화하거나 업데이트합니다.

  3. 쿼리를 준비하거나 실행할 때 사용할 $params 배열을 생성합니다. SQL Server 데이터 형식을 지정하는 경우 $params 배열의 각 요소도 배열이어야 합니다.

  4. 적절한 SQLSRV_SQLTYPE_* 상수를 $params 배열에 포함된 각 하위 배열의 네 번째 매개 변수로 사용하여 원하는 SQL Server 데이터 형식을 지정합니다. SQLSRV_SQLTYPE_* 상수의 전체 목록은 SQLSRV 상수의 SQLTYPE 단원을 참조하십시오. 예를 들어, 아래 코드에서 $changeDate, $rate$payFrequency는 각각 $params 배열에 SQL Server 형식의 datetime, moneytinyint로 지정되어 있습니다. $employeeId의 경우 SQL Server 형식이 지정되지 않아 정수로 초기화되므로 기본 SQL Server 형식인 integer가 사용됩니다.

    $employeeId = 5;
    $changeDate = "2005-06-07";
    $rate = 30;
    $payFrequency = 2;
    $params = array(
                array($employeeId, null),
                array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),
                array($rate, null, null, SQLSRV_SQLTYPE_MONEY),
                array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT)
              );
    

다음 예제에서는 Adventureworks 데이터베이스의 HumanResources.EmployeePayHistory 테이블에 데이터를 삽입합니다. $changeDate, $rate$payFrequency 매개 변수에 대해서는 SQL Server 형식이 지정되며 $employeeId 매개 변수에 대해서는 기본 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));
}

/* Define the query. */
$tsql1 = "INSERT INTO HumanResources.EmployeePayHistory (EmployeeID,
                                                        RateChangeDate,
                                                        Rate,
                                                        PayFrequency)
           VALUES (?, ?, ?, ?)";

/* Construct the parameter array. */
$employeeId = 5;
$changeDate = "2005-06-07";
$rate = 30;
$payFrequency = 2;
$params1 = array(
               array($employeeId, null),
               array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),
               array($rate, null, null, SQLSRV_SQLTYPE_MONEY),
               array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT)
           );

/* Execute the INSERT query. */
$stmt1 = sqlsrv_query($conn, $tsql1, $params1);
if( $stmt1 === false )
{
     echo "Error in execution of INSERT.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve the newly inserted data. */
/* Define the query. */
$tsql2 = "SELECT EmployeeID, RateChangeDate, Rate, PayFrequency
          FROM HumanResources.EmployeePayHistory
          WHERE EmployeeID = ? AND RateChangeDate = ?";

/* Construct the parameter array. */
$params2 = array($employeeId, $changeDate);

/*Execute the SELECT query. */
$stmt2 = sqlsrv_query($conn, $tsql2, $params2);
if( $stmt2 === false )
{
     echo "Error in execution of SELECT.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve and display the results. */
$row = sqlsrv_fetch_array( $stmt2 );
if( $row === false )
{
     echo "Error in fetching data.\n";
     die( print_r( sqlsrv_errors(), true));
}
echo "EmployeeID: ".$row['EmployeeID']."\n";
echo "Change Date: ".date_format($row['RateChangeDate'], "Y-m-d")."\n";
echo "Rate: ".$row['Rate']."\n";
echo "PayFrequency: ".$row['PayFrequency']."\n";

/* Free statement and connection resources. */
sqlsrv_free_stmt($stmt1);
sqlsrv_free_stmt($stmt2);
sqlsrv_close($conn);
?>

참고 항목

태스크

방법: PHP 데이터 형식 지정
방법: 기본 제공 UTF-8 지원을 사용하여 UTF-8 데이터 전송 및 검색

개념

설명서에 포함된 코드 예제 정보

관련 자료

데이터 검색
데이터 형식 변환