sqlsrv_prepare

지정된 연결과 연관된 문 리소스를 만듭니다.

참고

이 함수는 다중 쿼리를 실행하는 경우에 적합합니다. 자세한 내용은 방법: 쿼리 다중 실행을 참조하십시오.

구문

sqlsrv_prepare( resource $conn, string $tsql [, array $params [, array $options]])

매개 변수

$conn: 만든 문과 연관된 연결 리소스입니다.

$tsql: 만든 문에 해당하는 Transact-SQL 식입니다.

$params [옵션]: 매개 변수가 있는 쿼리의 매개 변수에 해당하는 값의 array입니다. 배열의 각 요소는 다음 중 하나일 수 있습니다.

  • 리터럴 값

  • PHP 변수에 대한 참조

  • array의 구조는 다음과 같습니다.

    array(&$value [, $direction [, $phpType [, $sqlType]]])
    

    참고

    쿼리 매개 변수로 전달된 변수는 값 대신 참조로 전달되어야 합니다. 예를 들어, $myVariable 대신 &$myVariable로 전달합니다. 값에 의한 매개 변수를 사용하는 쿼리가 실행될 경우 PHP 경고가 발생합니다.

    다음 표에서는 이러한 배열 요소를 설명합니다.

    요소 설명

    &$value

    리터럴 값 또는 PHP 변수에 대한 참조입니다.

    $direction[옵션]

    매개 변수 방향을 지정하는 데 사용되는 상수인 SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT SQLSRV_PARAM_* 중 하나입니다. 기본값은 SQLSRV_PARAM_IN입니다.

    $phpType[옵션]

    반환 값의 PHP 데이터 형식을 지정하는 SQLSRV_PHPTYPE_* 상수입니다.

    $sqlType[옵션]

    입력 값의 SQL Server 데이터 형식을 지정하는 SQLSRV_SQLTYPE_* 상수입니다.

$options [옵션]: 쿼리 속성을 설정하는 결합형 배열입니다. 다음 표에서는 지원되는 키와 해당 값을 보여 줍니다.

지원되는 값 설명

QueryTimeout

양의 정수 값

쿼리 제한 시간(초)을 설정합니다. 기본적으로 드라이버는 결과를 무기한 기다립니다.

SendStreamParamsAtExec

true 또는 false

기본값은 true입니다.

실행 시 모든 스트림 데이터를 보내거나(true) 스트림 데이터를 청크로 보내도록(false) 드라이버를 구성합니다. 기본적으로 이 값은 true로 설정되어 있습니다. 자세한 내용은 sqlsrv_send_stream_data를 참조하십시오.

Scrollable

SQLSRV_CURSOR_FORWARD

SQLSRV_CURSOR_STATIC

SQLSRV_CURSOR_DYNAMIC

SQLSRV_CURSOR_KEYSET

이 키는 SQL Server Driver for PHP 1.1 버전에 추가되었습니다.

이러한 값에 대한 자세한 내용은 커서 유형 지정 및 행 선택을 참조하십시오.

반환 값

문 리소스입니다. 문 리소스를 만들 수 없는 경우 false가 반환됩니다.

다음 예제에서는 문을 준비하고 실행합니다. 이 문은 실행될 때(sqlsrv_execute 참조) AdventureWorks 데이터베이스의 Sales.SalesOrderDetail 테이블에 있는 필드를 업데이트합니다. 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 Transact-SQL query. */
$tsql = "UPDATE Sales.SalesOrderDetail 
         SET OrderQty = ? 
         WHERE SalesOrderDetailID = ?";

/* Assign parameter values. */
$param1 = 5;
$param2 = 10;
$params = array( &$param1, &$param2);

/* Prepare the statement. */
if( $stmt = sqlsrv_prepare( $conn, $tsql, $params))
{
      echo "Statement prepared.\n";
} 
else
{
      echo "Statement could not be prepared.\n";
      die( print_r( sqlsrv_errors(), true));
}

/* Execute the statement. */
if( sqlsrv_execute( $stmt))
{
      echo "Statement executed.\n";
}
else
{
      echo "Statement could not be executed.\n";
      die( print_r( sqlsrv_errors(), true));
}

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

참고 항목

태스크

방법 매개 변수가 있는 쿼리 수행
방법: 데이터를 스트림으로 보내기

개념

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

관련 자료

API 참조(SQL Server Driver for PHP)
디자인 고려 사항
방향 매개 변수 사용