[英]sqlsrv_execute doesn't return anything
我正在使用 PHP 的 SQL 服務器驅動程序來訪問 SQLexec 服務器數據庫,我在使用sqlsrv_prpare
函數更新一些數據時sqlsrv_execute
問題。
我正在運行兩個查詢:
這是我的代碼的樣子:
$query1 = "SELECT tgt.id, src.file, src.field1 from [Table1] tgt inner join [Table2] src on tgt.id = src.id order by tgt.id";
$query2 = "UPDATE [Table1] SET field1 = ? WHERE id = ?";
$getFiles = sqlsrv_query($con, $query1); //$con is the connection with the database, received by parameter
while($row = sqlsrv_fetch_array($getFiles, SQLSRV_FETCH_BOTH)) {
/* Some code here */
$file = $row[1];
$value = $row[2];
try {
if(!is_null($file)) {
$stmt = sqlsrv_prepare($con, $query2, array(&$value, &$row[0]));
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
sqlsrv_execute( $stmt );
}
} catch (Exception $e) {
error_log("\nError: " . $e->getMessage());
}
} //end while
sqlsrv_free_stmt($getFiles);
sqlsrv_close($con);
問題是循環內的代碼對第一行運行良好,但在第二行沒有執行更新查詢。 sqlsrv_prepare
返回值 1,但sqlsrv_execute
不返回任何內容。
我認為問題可能與第一次查詢執行時間有關,但我不知道如何檢查,考慮到沒有生成錯誤日志,腳本只是永遠執行。
編輯:實際上,這個例子被簡化了。 將在 tgt 表上更新的值是使用 src 表中的一些數據和其他應用程序數據計算的。 這就是我使用循環的原因,對於 query1 返回的每一行,都會計算並在 query2 上使用特定值。 我已經檢查過這些值是否正確計算,這就是為什么我認為最好簡化示例。
為了解決這個問題,我必須單獨運行查詢:
無需進行其他更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.