我找不到在 php 上执行多个相互影响的 SQL 查询的 sqlsrv 代码

I can't find a sqlsrv code to execute multiple SQL queries,on php, that afect each other

谁能帮我在 php 上执行这 3 个查询?

declare @result varchar(24);
 exec usp_UserLogin @aUser = '$_POST[user]', @aPassword = '$_POST[pass]', @aToken = @result out; 
select @result as token;

我需要它们一个接一个地运行,因为如你所见,它们需要彼此才能正常工作。

TY 努诺·桑托斯

您需要执行一个包含这三行的查询,否则您会收到未定义参数之类的错误。想想你想在单独的 SSMS 查询 window.

上执行每个查询

您的查询将逐步执行。

$tsql= "declare @result varchar(24);
        exec usp_UserLogin @aUser = ?, @aPassword = ?, @aToken = @result out; 
        select @result as token;";

$params = array($_POST[user], $_POST[pass]);

$stmt = sqlsrv_query( $conn, $tsql, $params);

如果你想检查每个步骤的结果(对于这个查询似乎没有必要),你应该使用像 BEGIN TRAN, COMMIT TRAN

这样的事务

参考:sqlsrv_query

我解决了我的问题: 我将查询放在用“;”分隔的sqlsrv上或“,”或“/n”,但它比我想象的要简单!我只是一个接一个地放,用 space 隔开,像这样:

$rslt_query=sqlsrv_query($conn,"declare @result varchar(24) exec 
usp_UserLogin @aUser = '$_POST[user]', @aPassword = '$_POST[pass]', 
@aToken= @result out select @result as token "); 

然后我只是获取并获取 $_SESSION 变量的令牌:

while($row = sqlsrv_fetch_array($rslt_query,SQLSRV_FETCH_ASSOC))
{$_SESSION['token']=$row['token'];}