我无法找到一个sqlsrv代码来执行php上的多个SQL查询,这些查询相互影响

时间:2016-06-14 09:37:37

标签: php sqlsrv

任何人都可以帮我在php上执行这3个查询吗?

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

我需要他们一个接一个地跑,因为你可以看到,他们需要彼此正常工作。

TY 努诺桑托斯

2 个答案:

答案 0 :(得分:0)

您需要执行包含这三行的单个查询,否则会出现类似未定义参数的错误。想想要在单独的SSMS查询窗口上执行每个查询。

您的查询将逐步执行。

$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 TRANCOMMIT TRAN

之类的交易

参考:sqlsrv_query

答案 1 :(得分:0)

我解决了我的问题: 我把查询放在sqlsrv上用";"或","或" / n",但它比我想象的要简单!我只是把它们一个接一个地放在一起,用空格隔开,就像这样:

$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'];}