专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

sqlsrv_prepare

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:06:07       共计:3614 浏览

创建与指定的连接关联的语句资源。

注意:
此函数对于执行多个查询来说非常有用。有关详细信息,请参阅如何多次执行一个查询。



语法

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_* 常量之一:SQLSRV_PARAM_INSQLSRV_PARAM_OUTSQLSRV_PARAM_INOUT。默认值为 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。

可滚动

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)
设计注意事项
使用方向参数
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:sqlsrv_client_info | ·下一条:sqlsrv_num_fields

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有