У меня есть условие if/else в функции PHP, которая задает статус отправленной формы. Если форма уже существует, то идентификатор формы хранится как переменная сеанса и указывает функции, которая должна обновляться. Если форма является совершенно новой, то идентификатор формы не существует как переменная сеанса и оператор ELSE должен выполняться. Код записывается для получения последней записи в базе данных в случае новой формы.Операция Else не выполняется в PHP-состоянии
//Set the form status
if(isset($_SESSION['formId']))
{
//Update the status of the EXISTING record
$setStat = $con->prepare("UPDATE table SET Status = :status WHERE
formID = :formid");
$data = array('status'=>$status,'formid'=>$_SESSION['formId']);
$setStat -> execute($data);
}
else
{
//Update the status of the NEWLY CREATED record
$id = $con->prepare("SELECT TOP 1 formID FROM table ORDER BY formID
DESC");
$id->execute();
$row = $id->fetch(PDO::FETCH_ASSOC);
$formId = $row['formID'];
$setStatNew = $con->prepare("UPDATE table SET Status = :status WHERE
formID = :formid");
$data2 = array('status'=>$status,'formid'=>$formId);
$setStatNew -> execute($data2);
}
Эта функция вызывается после того, как новая запись будет написана, и я был в состоянии подтвердить, что в случае новой формы, переменный сеанса форма идентификатора не установлена и что запрос для получения самая новая запись из базы данных. Я могу успешно повторить новый идентификатор формы. Однако инструкция ELSE не выполняется. При отправке новой формы статус остается NULL. Что я могу пропустить?
print_r ($ _ SESSION); наверху, чтобы увидеть, что на самом деле есть в нем. –
Используйте 'vardump ($ _ SESSION)' для проверки переменной '$ _SESSION' и выясните, что происходит – sjagr
Я думаю, что он всегда устанавливает $ _SESSION ['formId']. поскольку вы сохранили его в сеансе. –