我有以下几行代码

if(isset($_GET['course_id'])) {
    $data_id = mysql_real_escape_string($_GET['course_id']);
    $subscriptionVerification = "SELECT `user_id`, `course_id` FROM subscriptions WHERE `user_id` = '".$user_id."' and `course_id`='".$data_id."'";
    $subscriptionResult = mysql_query($subscriptionVerification);
    if(!mysql_num_rows($subscriptionResult)===1)
     {
         header("location:login.php");
         die(); // sends user to the login page if their userID and subscription code do not match the page they are trying to retrieve
     }
}


问题是,当我从Chapters.php?course_id = 1234获取course_id时,如果该ID在mysql数据库中不存在,它仍然会加载页面而不是重定向。

如果我在没有if(mysql_num_rows($subscriptionResult)===1)的情况下编写!,则它可以正常工作,并且可以引导所有流量(包括正确的课程ID)。

我想知道我是否做错了什么。我也尝试了以下两种变体
if(!$subscriptionResult)if($subscriptionResult===FALSE),但都没有起作用。

这样做的目的是避免让人们尝试手动输入course_id(尤其是不存在的课程)并在页面中加载内容。

最佳答案

使用此代替:

if(!$subscriptionResult || mysql_num_rows($subscriptionResult)!==1)


如果结果为空或行数不为1,则会重定向。

我也强烈建议从已弃用的mysql_ *查询切换到PDO或mysqli。

07-24 18:37