我想在我的数据库中每天标记一次学生的出勤率

zvms9eto  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(392)

我想从arduino扫描rfid卡,它应该每天标记一次出勤率,而不是每次扫描卡。
这是用于标记出勤率的php代码:

public function getRFIDAttendanceApi(){
    $rfid_uid = trim($_REQUEST['uid']);
    $sql = "select count(*)as tot from tbl_users where rfid_uid='$rfid_uid'";

    $data = $this->getData($sql);
    if(count($data)>0 && $data[0]['tot']>0){
        $sql = "insert into tbl_attendance set rfid_uid='$rfid_uid'";
        $flag = $this->conn->query($sql);
        if($flag){
            echo "Attendance marked successfully!";
            die;
        } else {
            echo "Sorry! Something unexpected happened!";
            die;    
        }
    } else {
        echo "invalid access";die;
    }

这是mysql中的考勤表,用于重复评分

| att_id | rfid_uid | punch_timestamp     | date       | time     |
+--------+----------+---------------------+------------+----------+
|      1 | 85988145 | 2018-04-21 10:48:51 | 2018-04-21 | 10:48:51 |
|      2 | 85988145 | 2018-04-21 10:48:52 | 2018-04-21 | 10:48:52 |

每天怎么做一次?谢谢。

2j4z5cfb

2j4z5cfb1#

如果您的主键(att\u id,date),则不能多次插入具有给定日期的给定用户。然后,您的应用程序代码将处理这样的情况:用户每天尝试注册一次以上,并显示一条错误消息

5t7ly7z5

5t7ly7z52#

只需在考勤表的uid和日期上添加一个唯一的限制。

ALTER TABLE tbl_attendance ADD CONSTRAINT UK_ATTENTANCE UNIQUE(rfid_uid, `date`);

这样,一天内第一次成功打卡就可以插入数据库。

相关问题