Share via


sqlsrv_query

準備及執行陳述式。

注意

這個函數是要當做一次查詢來執行。如需詳細資訊,請參閱<如何:執行單一查詢>。

語法

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

參數

$conn:與準備的陳述式有關聯的連接資源。

$tsql:對應至準備之陳述式的 Transact-SQL 運算式。

$params [選擇性]:對應至參數化查詢內之參數的值 array。此陣列的每一個元素都可以是以下其中一項:

  • 常值。

  • PHP 變數。

  • 具有以下結構的 array

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

    下表是此陣列之每一個元素的描述:

    元素 描述

    $value

    常值、PHP 變數或是 PHP 傳址 (by-reference) 變數。

    $direction[選擇性]

    其中一個用來指示參數方向的 SQLSRV_PARAM_* 常數:SQLSRV_PARAM_INSQLSRV_PARAM_OUTSQLSRV_PARAM_INOUT。預設值為 SQLSRV_PARAM_IN

    如需有關 PHP 常數的詳細資訊,請參閱<SQLSRV 常數>。

    $phpType[選擇性]

    指定傳回值之 PHP 資料類型的 SQLSRV_PHPTYPE_* 常數。

    $sqlType[選擇性]

    指定輸入值之 SQL Server 資料類型的 SQLSRV_SQLTYPE_* 常數。

$options [選擇性]:設定查詢屬性的關聯陣列。支援的索引鍵如下:

索引鍵 支援的值 描述

QueryTimeout

正整數值。

設定查詢逾時 (以秒為單位)。根據預設,驅動程式將會無限期等候結果。

SendStreamParamsAtExec

truefalse

預設值為 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

範例

底下範例會更新 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 the parameterized query. */
$tsql = "UPDATE Sales.SalesOrderDetail 
         SET OrderQty = ( ?) 
         WHERE SalesOrderDetailID = ( ?)";

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

/* Execute the query. */
if( sqlsrv_query( $conn, $tsql, $params))
{
      echo "Statement executed.\n";
} 
else
{
      echo "Error in statement execution.\n";
      die( print_r( sqlsrv_errors(), true));
}

/* Free connection resources. */
sqlsrv_close( $conn);
?>

另請參閱

工作

如何:執行參數化查詢
如何:以資料流傳送資料

概念

有關文件集中的程式碼範例

其他資源

API 參考 (SQL Server Driver for PHP)
設計考量
使用方向參數