Переменные сеанса устанавливаются только после обновления страницы.

Моя переменная сеанса меняется только на правильное значение после того, как страница была загружена во второй раз. Такое поведение проявляется странно из-за того, что другая переменная сеанса (matchid) правильно настроена при первом загрузке страницы. Переменная, которая не устанавливается должным образом, если (номер обзора), она устанавливается в нижней части фрагмента кода.

Код

Я прошу прощения за длинный фрагмент кода, однако я не знаю, где ошибка:

if ($stmt = $dbc->prepare("SELECT matchid, user1, user2, user1_accept, user2_accept FROM matches WHERE user1_accept = ? or user2_accept = ? LIMIT 1")) { $stmt->bind_param('ii', $id, $id); // Bind id to parameter. $stmt->execute(); // Execute the prepared query. $stmt->store_result(); // get variables from result. $stmt->bind_result($matchid, $user1, $user2, $user1_accept, $user2_accept); $stmt->fetch(); $num_rows = mysqli_stmt_num_rows($stmt); if ($num_rows == 0){header('Location: /nomatches.php');} $_SESSION['matchid'] = $matchid; } print_r($_SESSION); if ($user1 != $id){ echo 'user 1 !='; $reviewnumber = 'user2_accept'; echo $reviewnumber; if ($stmt = $dbc->prepare("SELECT aboutme, friend, picture FROM userprofile WHERE id = ? LIMIT 1")) { $stmt->bind_param('i', $user1); // Bind id to parameter. $stmt->execute(); // Execute the prepared query. $stmt->store_result(); // get variables from result. $stmt->bind_result($aboutme, $friend, $picture); $stmt->fetch(); $picture = implode('/', array_map('rawurlencode', explode('/', $picture))); } if ($stmt = $dbc->prepare("SELECT full_name FROM users WHERE id = ? LIMIT 1")) { $stmt->bind_param('i', $user1); // Bind id to parameter. $stmt->execute(); // Execute the prepared query. $stmt->store_result(); // get variables from result. $stmt->bind_result($full_name); $stmt->fetch(); } } if ($user2 != $id){ echo 'user 2 !='; $reviewnumber = 'user1_accept'; echo $reviewnumber; if ($stmt = $dbc->prepare("SELECT aboutme, friend, picture FROM userprofile WHERE id = ? LIMIT 1")) { $stmt->bind_param('i', $user2); // Bind id to parameter. $stmt->execute(); // Execute the prepared query. $stmt->store_result(); // get variables from result. $stmt->bind_result($aboutme, $friend, $picture); $stmt->fetch(); $picture = implode('/', array_map('rawurlencode', explode('/', $picture))); } if ($stmt = $dbc->prepare("SELECT full_name FROM users WHERE id = ? LIMIT 1")) { $stmt->bind_param('i', $user2); // Bind id to parameter. $stmt->execute(); // Execute the prepared query. $stmt->store_result(); // get variables from result. $stmt->bind_result($full_name); $stmt->fetch(); } } $_SESSION["reviewnumber"] = $reviewnumber; 

Переменная: номер журнала, правильно отражается на первой загрузке страницы, поэтому я не понимаю, почему переменная сеанса неправильно установлена.