【文章內(nèi)容簡介】
hentication andspecify 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 ))。}/* Initiate transaction. *//* Exit script if transaction cannot be initiated. */if ( sqlsrv_begin_transaction( $conn ) === false ){ echo Could not begin transaction.\n。 die( print_r( sqlsrv_errors(), true ))。}/* Initialize parameter values. */$orderId = 43659。 $qty = 5。 $productId = 709。$offerId = 1。 $price = 。/* Set up and execute the first query. */$tsql1 = INSERT INTO (SalesOrderID, OrderQty, ProductID, SpecialOfferID, UnitPrice) VALUES (?, ?, ?, ?, ?)。$params1 = array( $orderId, $qty, $productId, $offerId, $price)。$stmt1 = sqlsrv_query( $conn, $tsql1, $params1 )。/* Set up and execute the second query. */$tsql2 = UPDATE SET Quantity = (Quantity ?) WHERE ProductID = ?。$params2 = array($qty, $productId)。$stmt2 = sqlsrv_query( $conn, $tsql2, $params2 )。/* If both queries were successful, mit the transaction. *//* Otherwise, rollback the transaction. */if( $stmt1 amp。amp。 $stmt2 ){ sqlsrv_mit( $conn )。 echo Transaction was mitted.\n。}else{ sqlsrv_rollback( $conn )。 echo Transaction was rolled back.\n。}/* Free statement and connection resources. */sqlsrv_free_stmt( $stmt1)。sqlsrv_free_stmt( $stmt2)。sqlsrv_close( $conn)。?為了著重介紹事務行為,上面的示例未涵蓋一些建議采用的錯誤處理方法。對于生產(chǎn)應用程序,建議檢查對sqlsrv函數(shù)的任何調(diào)用以查看是否存在錯誤并進行相應處理。注意:不要使用嵌入式 TransactSQL 來執(zhí)行事務。例如,不要通過將包含“BEGIN TRANSACTION”的語句作為 TransactSQL 查詢執(zhí)行來開始一個事務。使用嵌入式 TransactSQL 執(zhí)行事務時,無法保證出現(xiàn)預期的事務行為。sqlsrv_cancel取消一條語句。這意味著放棄該語句的所有掛起結(jié)果。調(diào)用此函數(shù)之后,如果該語句是使用sqlsrv_prepare預定義的,則可以重新執(zhí)行該語句。如果與該語句關聯(lián)的所有結(jié)果均已使用,則不必調(diào)用該函數(shù)。語法sqlsrv_cancel( resource $stmt)參數(shù)$stmt:要取消的語句。返回值布爾值:如果操作成功,則為true。否則為false。示例下面的示例以AdventureWorks數(shù)據(jù)庫為目標執(zhí)行查詢,然后使用結(jié)果并對其進行計數(shù),直至變量$salesTotal達到指定數(shù)量。然后放棄其余的查詢結(jié)果。此示例假定本地計算機上已安裝了 SQL Server 和 AdventureWorks 數(shù)據(jù)庫。從命令行運行此示例時,所有的輸出都將寫入控制臺。?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))。}/* Prepare and execute the query. */$tsql = SELECT OrderQty, UnitPrice FROM 。$stmt = sqlsrv_prepare( $conn, $tsql)。if( $stmt === false ){ echo Error in statement preparation.\n。 die( print_r( sqlsrv_errors(), true))。}if( sqlsrv_execute( $stmt ) === false){ echo Error in statement execution.\n。 die( print_r( sqlsrv_errors(), true))。}/* Initialize tracking variables. */$salesTotal = 0。$count = 0。/* Count and display the number of sales that produce revenueof $100,000. */while( ($row = sqlsrv_fetch_array( $stmt)) amp。amp。 $salesTotal =100000){ $qty = $row[0]。 $price = $row[1]。 $salesTotal += ( $price * $qty)。 $count++。}echo $count sales accounted for the first $$salesTotal in revenue.\n。/* Cancel the pending results. The statement can be reused. */sqlsrv_cancel( $stmt)。?注釋使用sqlsrv_prepare和sqlsrv_execute的組合預定義并執(zhí)行的語句在調(diào)用sqlsrv_execute之后可以使用sqlsrv_cancel重新執(zhí)行。使用sqlsrv_query執(zhí)行的語句在調(diào)用sqlsrv_cancel之后無法重新執(zhí)行。sqlsrv_client_info此主題尚未評級評價此主題返回有關連接和客戶端堆棧的信息。語法sqlsrv_client_info( resource $conn)參數(shù)$conn:通過其來連接客戶端的連接資源。返回值具有下表中說明的鍵的關聯(lián)數(shù)組;如果連接資源為 null,則為false。鍵說明DriverDllName(SQL Server Driver for PHP 版)(SQL Server Driver for PHP 版)DriverODBCVerODBC 版本 ()DriverVerSQL Server Native Client DLL 版本:(SQL Server Driver for PHP 版)(SQL Server Driver for PHP 版)ExtensionVer version:(SQL Server Driver for PHP 版)(SQL Server Driver for PHP 版)示例從命令行運行以下示例時,此示例將客戶端信息寫入控制臺。此示例假定在本地計算機上已安裝 SQL Server。從命令行運行此示例時,所有的輸出都將寫入控制臺。?php/*Connect to the local server using Windows Authentication and specify the AdventureWorks database as the database in use. */$serverName = (local)。$conn = sqlsrv_connect( $serverName)。if( $conn === false ){ echo Could not connect.\n。 die( print_r( sqlsrv_errors(), true))。}if( $client_info = sqlsrv_client_info( $conn)){ foreach( $client_info as $key = $value) { echo $key.: .$value.\n。 }}else{ echo Client info error.\n。}/* Close connection resources. */sqlsrv_close( $conn)。?另請參見sqlsrv_close關閉指定的連接并釋放相關資源。語法sqlsrv_close( resource $conn )參數(shù)$conn:要關閉的連接。返回值若非使用無效參數(shù)調(diào)用此函數(shù),則為布爾值true。如果使用無效參數(shù)調(diào)用此函數(shù),則返回false。注意:Null是此函數(shù)的有效參數(shù)。使用此參數(shù),可在腳本中多次調(diào)用此函數(shù)。例如,如果在一個錯誤條件中關閉某一連接并在腳本末尾再次關閉該連接,則對sqlsrv_close的第二次調(diào)用將返回true,因為對sqlsrv_close的第一次調(diào)用(在錯誤條件中)將相應連接資源設置為null。示例下面的示例將關閉一個連接。此示例假定在本地計算機上已安裝 SQL Server。從命令行運行此示例時,所有的輸出都將寫入控制臺。?php/*Connect to the local server using Windows Authentication and specify the AdventureWorks database as the database in use. */$serverName = (local)。$conn = sqlsrv_connect( $serverName)。if( $conn === false ){ echo Could not connect.\n。 die( print_r( sqlsrv_errors(), true))。}//// Perform operations with connection here.///* Close the connection. */sqlsrv_close( $conn)。echo Connection closed.\n。?sqlsrv_mit此主題尚未評級評價此主題提交指定連接上的當前事務,并使該連接返回到自動提交模式。當前事務包括指定連接上在調(diào)用sqlsrv_begin_transaction之后、對sqlsrv_rollback或sqlsrv_mit進行任何調(diào)用之前執(zhí)行的所有語句。注意:默認情況下,SQL Server Driver for PHP 為自動提交模式。也就是說,對所有查詢而言,如果未使用sqlsrv_begin_transaction將其指定為顯式事務的一部分,則這些查詢都會在成功完成后自動提交。注意:如果對不屬于活動事務并且是使