首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在我的数据库里记录一天一次的学生出勤情况。

我想在我的数据库里记录一天一次的学生出勤情况。
EN

Stack Overflow用户
提问于 2018-04-21 06:41:54
回答 2查看 724关注 0票数 0

我想扫描来自Arduino的RFID卡,它应该标记出勤每天一次,而不是每当它扫描卡片。

这是用于标记出勤的PHP代码:

代码语言:javascript
复制
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中用于重复标记的出勤表。

代码语言:javascript
复制
| 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 |

一天怎么做一次?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-21 06:56:32

只需在rfid_uid和date上的考勤表中添加一个唯一的对比。

代码语言:javascript
复制
ALTER TABLE tbl_attendance ADD CONSTRAINT UK_ATTENTANCE UNIQUE(rfid_uid, `date`);

这样,一天内第一次成功地从卡上成功地打孔就会插入数据库中。

票数 0
EN

Stack Overflow用户

发布于 2018-04-21 06:51:42

如果您的主键(att_id,date),则不能在给定日期中插入多个给定日期的给定用户。然后,应用程序代码将处理用户每天尝试多次注册,显示错误消息的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49953122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档