1
我已經在SQL Server 2012中編寫了一個相當複雜的存儲過程,我知道在執行時多次選擇「1」。當我在SQL Management Studio中運行它時,它會執行並正確更新我的表的行。然而,當我使用下面的代碼從PHP調用它,它不執行:複雜的存儲過程在sqlsrv_execute調用時不會執行
declare @p1 int
set @p1=NULL
exec sp_prepexec @p1 output,N'@P1 int,@P2 int',N'exec UpdateBudgetToMatchTransactions @[email protected], @[email protected]',2,2016
select @p1
go
然而,行不受影響:
$Month = 2;
$Year = 2016;
$connectionInfo = array("Database"=>"Finances", "UID"=>"sa", "PWD"=>"abcd1234");
$connection = sqlsrv_connect("localhost", $connectionInfo);
if($connection === false) {
die(print_r(sqlsrv_errors(), true));
}
$stmt = sqlsrv_prepare($connection, "exec UpdateBudgetToMatchTransactions @Month=?, @Year=?", array(&$Month, &$Year));
if (sqlsrv_execute($stmt) === false) {
die(print_r(sqlsrv_errors(), true));
}
SQL事件探查說是發生在服務器上的以下就像我直接調用存儲過程一樣。此外,如果我在SQL Management Studio中完全執行該SQL塊並將其全部執行,那麼這些行會改變我期望它們的方式。
我很感謝任何幫助確定我做錯了什麼。