我想從存儲在遠程MSSQL服務器上的過程中提取數據。 PHP documentation在sqlsrv_fetch($stmt)
中表示,$stmt
表示由sqlsrv_query()
或sqlsrv_execute()
返回的資源。sqlsrv_fetch與MS SQL服務器sqlsrv_execute
這裏是我的代碼片段 - >
$sql = "exec USP_ABC_ABC_REPORT 'Apple','06/01/2014','10/29/2014','H','A'";
$segment ='apple';
$start_date='06/01/2014';
$end_date ='10/29/2014';
$something2 ='H';
$something3 ='A';
$abc = sqlsrv_prepare($conn, $sql, array(&$segment, &$start_date, &$end_date, &$something2, &$something3));
if($abcd = sqlsrv_execute($abc)){
if(sqlsrv_fetch($abcd)){
$id = sqlsrv_get_field($abcd, 0);
echo $id;
} else{
echo "fetch failed";
}
}
該片段顯示了一個錯誤:
sqlsrv_fetch() expects parameter 1 to be resource, boolean given.
sqlsrv_fetch()如果我使用sqlsrv_query(正常工作),而不是sqlsrv_execute /準備。可能的原因是sqlsrv_query()返回混合輸出而不是布爾值。
任何人都可以幫助使用sqlsrv_fetch執行。
是的我的準備聲明工作正常。所以我已經刪除了我的execute語句,並使用了sqlsrv_fetch($ abc),正如你所提到的那樣。這會顯示「提取失敗」(上面的代碼中的else語句)。這是由於遠程服務器中的錯誤嗎?另外,爲什麼官方的PHP sqlsrv_fetch()帖子沒有提及我們可以使用prepare資源作爲參數? –