My session variable only changes to the correct value once the page has been loaded for the second time. This behaviour exhibited is weird due to the fact that the other session variable (matchid) is set correctly the first time that the page is loaded. The variable that is not setting properly if (review number), it is set at the bottom of the code snippet.
The Code
I apologise for the long code snippet, however I have no idea where the error is:
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;
The variable: reviewnumber, is correctly echoed on the first page load, which is why I don't understand why the session variable is not correctly set.