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);
?>
참고 항목
태스크
방법 매개 변수가 있는 쿼리 수행
방법: 데이터를 스트림으로 보내기