如何验证用户是否已经在php中注册课程

时间:2017-07-16 10:39:17

标签: php sql validation php-mysqlidb

       if (isset($_POST['enroll'])) {
            $student_id       =  intval($session->user_id);
            $course_id      =  $course_id;
            $date       =   date('Y-m-d');
  

我需要PDO函数,如果用户course_id已经存在,则返回false。

    ***if ($enroll->student_id has this->course_id) {
           $message = "<b>U already enrolled continue</b>";
    }else{***
                $enroll->user_id   = $user_id;
                $enroll->course_id  = $course_id;
                $enroll->en_date    = $date;
                $enroll->create();
//            }

这是我的学生表格列

  1. std_id
  2. 如first_name
  3. 这是我的课程表

    1. COURSE_ID
    2. COURSE_NAME
    3. 我还有注册表

      1. ID
      2. student_id数据
      3. COURSE_ID
      4. 我需要验证用户是否已经使用PHP PDO功能开课 还有一些学生参加了特定的课程。

2 个答案:

答案 0 :(得分:1)

此查询将验证学生是否已注册上述课程:

SELECT id FROM enrolled_table WHERE student_id = STUDENT_ID_PARAMETER and course_id = COURSE_ID_PARAMETER

此查询将为您提供每门课程的学生人数:

SELECT count(id), course_id FROM enrolled_table
WHERE student_id not null
GROUP BY course_id
ORDER BY count(id) DESC;

答案 1 :(得分:1)

您可以使用以下功能检查用户是否已注册。

function user_enroll($student_id, $course_id){
$stmt = $conn->prepare('SELECT * FROM enroll WHERE student_id=? AND course_id=?');
$stmt->bindParam(1, $student_id, PDO::PARAM_INT);
$stmt->bindParam(2, $course_id, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);

if($row)
{
    return false; // course already taken
}
return true; // course not taken

}

同时执行返回用户注册和注册课程的学生总数。

function user_enroll($student_id, $course_id){
$stmt = $conn->prepare('SELECT * FROM enroll WHERE student_id=? AND course_id=?');
$stmt->bindParam(1, $student_id, PDO::PARAM_INT);
$stmt->bindParam(2, $course_id, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);

$total_enrolled_students = $pdo->query('select count(*) from enroll WHERE course_id='.$course_id)->fetchColumn(); 
$ret_data = array('user_enroll' => true,'total_std_enrolled'=>$total_enrolled_students);

if($row)
{
    $ret_data['user_enroll'] = false;
    return $ret_data; // course already taken
}
return $ret_data; // course not taken

所以这个函数返回带有两个元素的数组。一个是 user_enroll ,用于是否注册的学生,另一个是 total_std_enrolled ,这是当然学生总数。