以下範例執行一個批次查詢,先插入資料到表格中,然後從表格中選取資料。這會在敘述中產生兩個結果:一個是 INSERT 影響的資料列數,另一個是 SELECT 返回的資料列。要取得 SELECT 返回的資料列,必須呼叫 sqlsrv_next_result() 來移至第一個結果之後。
<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array("Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$query = "INSERT INTO Table_1 (id, data) VALUES (?,?); SELECT * FROM TABLE_1;";
$params = array(1, "some data");
$stmt = sqlsrv_query($conn, $query, $params);
// 不呼叫 sqlsrv_next_result(),直接處理第一個結果 (INSERT 影響的資料列數)。
echo "受影響的資料列數:".sqlsrv_rows_affected($stmt)."<br />";
// 移至下一個結果並顯示結果。
$next_result = sqlsrv_next_result($stmt);
if( $next_result ) {
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
echo $row['id'].": ".$row['data']."<br />";
}
} elseif( is_null($next_result)) {
echo "沒有更多結果。<br />";
} else {
die(print_r(sqlsrv_errors(), true));
}
?>