[英]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.