Я не могу найти код 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'];}