Я не могу найти код sqlsrv для выполнения нескольких запросов SQL на php, которые влияют друг на друга

Кто-нибудь может помочь мне выполнить эти 3 запроса на php?

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

Мне нужно, чтобы они запускались один за другим, потому что, как вы видите, они нужны друг другу для правильной работы.

TY Нуно Сантос

2 ответа

Решение

Вам нужно выполнить один запрос, содержащий эти три строки, в противном случае вы получите ошибку, например, неопределенный параметр. Подумайте, как вы хотите выполнить каждый из запросов в отдельном окне запросов 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 TRAN, COMMIT TRAN

Ссылка: sqlsrv_query

Я решил свою проблему: я помещал запросы в 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'];}
Другие вопросы по тегам