mysql select 准备好的语句不发送令牌

mysql select prepared statement not sending token

我创建了一个使用令牌的登录系统。这个准备好的声明不起作用。它不断重定向到错误消息。

我已经尝试过非准备语句,这里是它的样子。

{
 $stmt = mysqli_prepare($con, "SELECT token FROM tbltoken WHERE token=?");
$stmt->bind_param("s", $token);
$token=$_POST['token'];
$stmt->execute();
$stmt->bind_result($token);
if($token>0)
{
//verifying Password
if ($_POST['token']= $token) {
$_SESSION['login']=$_POST['token'];
    echo "<script type='text/javascript'> document.location = 'dashboard.php'; </script>";
  } 
}
//if username or email not found in database
else{
echo "<script>alert('User not registered with us');</script>";
  }

}

这样做的预期结果是令牌通过语句发送并重定向到页面。

如果您只需要检查数据库中是否存在,则不需要 select 令牌。只是 select 1.

$stmt = $con->prepare( "SELECT 1 FROM tbltoken WHERE token=?");
$stmt->bind_param("s", $_POST['token']);
$stmt->execute();
$stmt->bind_result($exists);
$stmt->fetch();
if($exists) {
    //verifying Password
    $_SESSION['login']=$_POST['token'];
    echo "<script type='text/javascript'> document.location = 'dashboard.php'; </script>";
}
//if username or email not found in database
else {
    echo "<script>alert('User not registered with us');</script>";
}