Prepares a query for execution. This function is ideal for preparing a query that will be executed multiple times with different parameter values.
A connection resource returned by sqlsrv_connect().
The string that defines the query to be prepared and executed.
An array specifying parameter information when executing a parameterized query. Array elements can be any of the following:
- A literal value
- A PHP variable
- An array with this structure: array($value [, $direction [, $phpType [, $sqlType]]])
Element | Description |
---|---|
$value | A literal value, a PHP variable, or a PHP by-reference variable. |
$direction (optional) | One of the following SQLSRV constants used to indicate the parameter direction: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. The default value is SQLSRV_PARAM_IN. |
$phpType (optional) | A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the returned value. |
$sqlType (optional) | A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data type of the input value. |
An array specifing query property options. The supported keys are described in the following table:
Key | Values | Description |
---|---|---|
QueryTimeout | A positive integer value. | Sets the query timeout in seconds. By default, the driver will wait indefinitely for results. |
SendStreamParamsAtExec |
TRUE or FALSE (the default is TRUE ) | Configures the driver to send all stream data at execution (TRUE ), or to send stream data in chunks (FALSE ). By default, the value is set to TRUE . For more information, see sqlsrv_send_stream_data(). |
Scrollable | SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_STATIC, SQLSRV_CURSOR_DYNAMIC, or SQLSRV_CURSOR_KEYSET | See » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation. |
Returns a statement resource on success and FALSE
if an error occurred.
This example demonstrates how to prepare a statement with sqlsrv_prepare() and re-execute it multiple times (with different parameter values) using sqlsrv_execute().
<?php $serverName = "serverName\sqlexpress"; $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn === false) { die( print_r( sqlsrv_errors(), true)); } $sql = "UPDATE Table_1 SET OrderQty = ? WHERE SalesOrderID = ?"; // Initialize parameters and prepare the statement. // Variables $qty and $id are bound to the statement, $stmt. $qty = 0; $id = 0; $stmt = sqlsrv_prepare( $conn, $sql, array( &$qty, &$id)); if( !$stmt ) { die( print_r( sqlsrv_errors(), true)); } // Set up the SalesOrderDetailID and OrderQty information. // This array maps the order ID to order quantity in key=>value pairs. $orders = array( 1=>10, 2=>20, 3=>30); // Execute the statement for each order. foreach( $orders as $id => $qty) { // Because $id and $qty are bound to $stmt1, their updated // values are used with each execution of the statement. if( sqlsrv_execute( $stmt ) === false ) { die( print_r( sqlsrv_errors(), true)); } } ?>
Please login to continue.