2024 年日本 PHP 研討會

sqlsrv_next_result

(無版本資訊,可能只存在於 Git 中)

sqlsrv_next_result啟用指定陳述式的下一個結果

說明

sqlsrv_next_result(資源 $stmt): 混合

啟用指定陳述式的下一個結果。結果包括結果集、資料列計數和輸出參數。

參數

stmt

正在呼叫下一個結果的陳述式。

傳回值

如果成功擷取下一個結果,則傳回 true;如果發生錯誤,則傳回 false;如果沒有更多結果可擷取,則傳回 null

範例

範例 #1 sqlsrv_next_result() 範例

以下範例執行一個批次查詢,先插入資料到表格中,然後從表格中選取資料。這會在敘述中產生兩個結果:一個是 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));
}
?>

另請參閱

新增註解

使用者貢獻的註解 1 則註解

-2
chakin
10 年前
您可以使用 for 迴圈來迭代結果

如果您知道應該有多少結果,那就更容易了,否則您可以在迴圈建構子中放入一個很大的數字,並在完成時中斷

<?
for ($i=0; $i< (很大的數字或確切的數字); $i++)
{
$rows_affected = sqlsrv_rows_affected($q2);
if ($rows_affected === false)
{
echo '插入失敗<br />\n';
} else if ( $rows_affected == -1) {
echo "沒有可用的資訊。<br />\n";
} else {
echo $rows_affected." 列資料已被新增。<br />\n";
}

$next_result = sqlsrv_next_result($q2);

if (!$next_result)
{
break;
}
}
?>
To Top