会话变量仅在页面刷新后设置
Session variables only sets once the page has been refreshed
我的会话变量只有在页面第二次加载后才会更改为正确的值。由于在第一次加载页面时正确设置了另一个会话变量 (matchid),因此表现出的这种行为很奇怪。未正确设置的变量 if (review number),它设置在代码段的底部。
代码
对于较长的代码片段,我深表歉意,但我不知道错误出在哪里:
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;
变量:reviewnumber,在第一页加载时正确回显,这就是为什么我不明白为什么会话变量设置不正确。
在更改会话值之前打印会话值 - 因此新会话值仅在下一页加载时显示。如果其他人有类似的问题,这绝对是一个重要的检查事项。
我的会话变量只有在页面第二次加载后才会更改为正确的值。由于在第一次加载页面时正确设置了另一个会话变量 (matchid),因此表现出的这种行为很奇怪。未正确设置的变量 if (review number),它设置在代码段的底部。
代码
对于较长的代码片段,我深表歉意,但我不知道错误出在哪里:
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;
变量:reviewnumber,在第一页加载时正确回显,这就是为什么我不明白为什么会话变量设置不正确。
在更改会话值之前打印会话值 - 因此新会话值仅在下一页加载时显示。如果其他人有类似的问题,这绝对是一个重要的检查事项。