首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

sqlsrv_prepare

(没有可用的版本信息,可能只在Git中)

sqlsrv_prepare - 准备执行查询

描述

代码语言:javascript
复制
mixed sqlsrv_prepare ( resource $conn , string $sql [, array $params [, array $options ]] )

准备查询执行。该功能非常适用于准备将使用不同参数值多次执行的查询。

参数

conn

由sqlsrv_connect()返回的连接资源。

sql

定义要准备和执行的查询的字符串。

params

执行参数化查询时指定参数信息的数组。数组元素可以是以下任何一种:

  • 字面值
  • 一个PHP变量
  • 具有这种结构的数组:array($ value [,$ direction [,$ phpType,$ sqlType]])

下表描述了上述数组结构中的元素:

元件

描述

$值

一个字面值,一个PHP变量或一个PHP by-reference变量。

$方向(可选)

以下SQLSRV常量之一用于指示参数方向:SQLSRV_PARAM_IN,SQLSRV_PARAM_OUT,SQLSRV_PARAM_INOUT。默认值是SQLSRV_PARAM_IN。

$ phpType(可选)

指定返回值的PHP数据类型的SQLSRV_PHPTYPE_ *常量。

$ sqlType(可选)

一个SQLSRV_SQLTYPE_ *常量,用于指定输入值的SQL Server数据类型。

options

指定查询属性选项的数组。下表中描述了支持的密钥:

描述

的QueryTimeout

一个正整数值。

以秒为单位设置查询超时。默认情况下,驱动程序将无限期地等待结果。

SendStreamParamsAtExec

TRUE或FALSE(默认值为TRUE)

配置驱动程序在执行时发送所有流数据(TRUE),或以块(FALSE)发送流数据。默认情况下,该值设置为TRUE。有关更多信息,请参见sqlsrv_send_stream_data()。

滚动

SQLSRV_CURSOR_FORWARD,SQLSRV_CURSOR_STATIC,SQLSRV_CURSOR_DYNAMIC或SQLSRV_CURSOR_KEYSET

请参阅»在Microsoft SQLSRV文档中指定光标类型并选择行。

返回值

成功时返回语句资源并且发生错误时返回FALSE

例子

示例#1 sqlsrv_prepare()示例

此示例演示如何使用sqlsrv_execute()使用sqlsrv_prepare()准备语句并多次重复执行它(使用不同的参数值)。

代码语言:javascript
复制
<?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));
    }
}
?>

笔记

当您准备一个使用变量作为参数的语句时,变量将绑定到该语句。这意味着如果您更新变量的值,则在下次执行语句时,它将使用更新的参数值运行。对于您计划只执行一次的语句,请使用sqlsrv_query()。

扫码关注腾讯云开发者

领取腾讯云代金券