php - 查询失败时脚本不重定向

标签 php mysql

我有以下几行代码

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) 而没有 ! 那么它确实可以工作并引导所有流量(包括正确的类(class) ID) )结束。

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

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

最佳答案

改用这个:

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

如果结果为空,或者行数不为 1,这将重定向。

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

关于php - 查询失败时脚本不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18858092/

相关文章:

mysql - 如何简化多个子查询和GROUP_CONCAT?

mysql - 组合使用相同表和相同列的两个查询

javascript - 按国家/地区代码隐藏 div

php - 以日期格式为键对多维数组进行排序

php - 如何在 php mysql 查询中搜索数字?

mysql - 使用表中的子查询进行缓慢的 MySQL 查询

日期格式的 php 字符串,加上 12 小时

php - 显示数据库中存储的 url 中的照片

php - 如何解决 Function sql_regcase() is deprecated issue in php

mysql - 添加计算字段的结果